如何从模型绑定Collection以查看MVC Razor

时间:2015-05-25 19:12:32

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我正在使用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。我希望得到一些帮助。

1 个答案:

答案 0 :(得分:1)

控制器中参数的名称必须与字段名称相同,因此如果控制器中存在该字段实体,则必须将其命名为

另请参阅以下博客,其中显示了如何在MVC中使用复杂对象进行模型绑定

http://blog.codeinside.eu/2012/09/17/modelbinding-with-complex-objects-in-asp-net-mvc/