[英]MVC HttpPost strongly typed Model null
View Model看起來像這樣:
public class AsmenysInfoViewModel2
{
public asmenys_info Asmenys_info { get; set; }
public List<miestai> Miestai { get; set; }
public string Test { get; set; }
}
有兩個動作。 獲取和發布。
public ActionResult Index(long? id)
{
var model = new AsmenysInfoViewModel2();
model.Test = "Test";
model.Asmenys_info = BllFactory.DalFactory.AsmenysInfoDal.GetById(id.Value);
return View(model);
}
[HttpPost]
public ActionResult Index(AsmenysInfoViewModel2 asmenys_info)
{
var model = asmenys_info;
return View(model);
}
我的觀點看起來像這樣:
@model MODELS.AsmenysInfoViewModel2
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("Index", "AsmenysInfo", FormMethod.Post))
{
@Html.ValidationSummary()
@Html.TextBoxFor(m => m.Asmenys_info.adresas)
<input type="submit" value="Išsaugoti" />
}
如果我使用EditorFor或TextBoxFor無關緊要 - 結果相同。 發布時我的模型屬性“Asmenys_info”始終為null。 如果我的類AsmenysInfoViewModel2不包含asmenys_info類型屬性並且只包含“string,int etc”(沒有強類型) - 它會起作用。 我的問題是:
如何發布具有強類型屬性的View Model,在發布時不會為null?
您的模型具有名為Asmenys_info
的屬性,POST方法中的參數也名為asmenys_info
。 在內部, DefaultModelBinder
讀取包含Asmenys_info
值的表單數據的值,並嘗試將屬性Asmenys_info
設置為該值但由於沒有從string
到復雜對象的轉換而失敗。
例如,將參數的名稱更改為模型中屬性名稱以外的任何名稱,它將綁定正常
[HttpPost]
public ActionResult Index(AsmenysInfoViewModel2 model)
使用其他對象名稱更改以下行
public ActionResult Index(AsmenysInfoViewModel2 asmenys_info)
在上面的方法中使用對象的任何其他名稱而不是asmenys_info 。
因為雖然mvc框架使用對象映射模型,但AsmenysInfoViewModel2類的asmenys_info和Asmenys_info屬性存在混淆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.