How to model bind to a List?

2019-02-19 08:50发布

问题:

I'm trying to accomplish something like this. I feel like it's possible, and if not probably an oversight in the MVC framework?

View:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<List<MyViewModel>>" %>
...
<% foreach (MyViewModel vm in Model) {
    Html.RenderPartial("MyViewModelPartial", vm);
} %>

The partial view being an editable form, strongly typed to a single MyViewModel, and use the DataAnnotations on the MyViewModel class to validate

Controller:

public ActionResult FooController(List<MyViewModel> vml)
{ 
   ...
}

Is this possible? This seems like the most logical way to build grid/table structures in MVC(with each partial view being a table row) but I can't seem to get it to work and I end up using FormCollection in my controller to loop through the whole dang form, and it's just messy.

回答1:

See:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

Which is linked to from:

Complex model binding to a list

How ASP.NET MVC: How can I bind a property of type List<T>?