Asp.Net MVC 2 - 在模型绑定器中迭代表单值

时间:2010-03-29 10:19:25

标签: asp.net-mvc modelbinders

我的表单中有一个项目列表,其名称如下...

<input type="text" id="ListItem1" name="ListItem1">
<input type="text" id="ListItem2" name="ListItem2">
<input type="text" id="ListItem3" name="ListItem3">

我想创建一个自定义模型绑定器,将这些绑定器转换为具有此结构的模型...

public class MyModel
{
  public IEnumerable<MyModelItem> Items {get; set;}
}

public class MyModelItem
{
  public int Id { get; set; }
  public string Value { get; set; }
}

因此,每个ListItem都应转换为MyModelItem,其id等于输入id末尾的数字,并将值设置为输入字段的值。

在ASP.Net MVC 1.0中,我可以迭代bindingContext.ValueProvider.Keys集合并检查key.StartsWith("ListItem")以查找此格式的所有输入项。

ASP.Net MVC 2中的新IValueProvider接口没有密钥集合,我无法迭代该接口。 如何在ASP.Net MVC 2中访问这些我只知道设计时前缀的值?

2 个答案:

答案 0 :(得分:5)

如果要迭代表单值,请使用Request.Form。

答案 1 :(得分:-1)

你能使用bindingContext.ModelState.Keys集合吗?

<强>更新 对不起,本来应该更清楚一点。我的意思是你不能使用ModelState.Keys集合,检查key.StartsWith(“ListItem”),如果是这样,使用该键从值提供者获取值(使用GetValue方法)。