是的,ASP.NET MVC 可以自动将集合绑定到操作参数,但是您需要将参数作为 from 值传递,此外,看起来您将在查询字符串中传递许多参数。看看这个http://weblogs.asp.net/nmarun/archive/2010/03/13/asp-net-mvc-2-model-binding-for-a-collection.aspx
基本上你需要做什么:
1) 创建包含参数的类
public class MyParam
{
public int Id {get; set;}
public string Name {get; set;}
//do all the rest
}
2) 创建您将传递给视图的模型
public class MyViewModel
{
IList<MyParam> MyParams {get; set;}
}
3) 在您的 [HttpGet] 操作中创建您的集合并将其传递给您的视图:
[HttpGet]
public virtual ActionResult Index()
{
MyViewModel model = new MyViewModel();
model.MyParams = CreateMyParamsCollection();
return View(model);
}
4) 在视图中迭代您的集合
@model MyViewModel
@{int index = 0;}
@foreach (MyParam detail in Model.MyParams)
{
@Html.TextBox("MyParams[" + index.ToString() + "].Id", detail.Id)
@Html.TextBox("MyParams[" + index.ToString() + "].Name", detail.Name)
index++;
}
5) 在您的 [HttpPost] 操作中,您可能会收集到您的参数
[HttpPost]
public virtual ActionResult Index(MyViewModel model)
或
[HttpPost]
public virtual ActionResult Index(IList<MyParam> model)
附言
此外,如果您想在控制器中获取所有表单参数,您可以这样做:
[HttpPost]
public virtual ActionResult Index(FormCollection form)