我正在使用ASP.NET MVC开发一个Web应用程序,我有两个这样的实体:
[DataContract]
public class Entity1 : IEntity<int>
{
[DataMember(Name="id")]
public int Id {get; set;}
[DataMember(Name="name")]
public string Name {get; set;}
[DataMember(Name="list")]
public ICollection Entity2Collection {get; set;}
}
[DataContract]
public class Entity2 : IEntity<int>
{
[DataMember(Name="id")]
public int Id {get; set;}
[DataMember(Name="name")]
public string Name {get; set;}
[DataMember(Name="entity3id")]
public int Entity3ObjId {get; set;}
public Entity3 Entity3Obj {get; set;}
}
在控制器操作中,我有以下内容:
[HttpPost]
public ActionResult Edit(Entity1 entity)
{
if(ModelState.IsValid){
await repository.updateAsync(entity);
}
return View();
}
在entity参数中,属性 Entity2Collection 始终为null,我不知道我错过了什么,因为我在视图中有这个
@Html.HiddenFor(model => model.Entity2Collection)
但是当我发布Post请求时它总是为null。我希望得到一些帮助。
答案 0 :(得分:1)
控制器中参数的名称必须与字段名称相同,因此如果控制器中存在该字段实体,则必须将其命名为
另请参阅以下博客,其中显示了如何在MVC中使用复杂对象进行模型绑定
http://blog.codeinside.eu/2012/09/17/modelbinding-with-complex-objects-in-asp-net-mvc/