Asp.Net MVC 2 - 迭代模型绑定器中的表单值
我的表单中有一个项目列表,其名称如下...
<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 应转换为 id 等于的 MyModelItem输入 ID 末尾的数字和设置为输入字段上的值的值。
在 ASP.Net MVC 1.0 中,我可以迭代 bindingContext.ValueProvider.Keys
集合并检查 key.StartsWith("ListItem")
以查找此格式的所有输入项。
ASP.Net MVC 2 中的新 IValueProvider 接口没有键集合,我无法迭代该接口。 如何在 ASP.Net MVC 2 中访问这些我在设计时只知道其前缀的值?
I have a list of items in my form which are named like this...
<input type="text" id="ListItem1" name="ListItem1">
<input type="text" id="ListItem2" name="ListItem2">
<input type="text" id="ListItem3" name="ListItem3">
I want to create a custom model binder which converts these in to model with this structure...
public class MyModel
{
public IEnumerable<MyModelItem> Items {get; set;}
}
public class MyModelItem
{
public int Id { get; set; }
public string Value { get; set; }
}
So each ListItem should be converted to a MyModelItem with id equal to the number at the end of the input id and value set to the value on the input field.
In ASP.Net MVC 1.0 I could iterate over the bindingContext.ValueProvider.Keys
collection and check for key.StartsWith("ListItem")
to find all input items in this format.
The new IValueProvider interface in ASP.Net MVC 2 does not have a keys collection and I cannot iterate over that interface. How can I access these values which I only know the prefix for at design time in ASP.Net MVC 2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想迭代表单值,请使用Request.Form。
If you want to iterate over the form values, use Request.Form.
您可以使用 bindingContext.ModelState.Keys 集合吗?
更新
抱歉,应该更清楚一点。我的意思是您是否可以不使用 ModelState.Keys 集合,检查 key.StartsWith("ListItem") ,如果是这样,请使用该键从值提供程序获取值(使用 GetValue 方法)。
Could you use the bindingContext.ModelState.Keys collection?
Update
Sorry, should have been a bit clearer. What I meant was could you not use the ModelState.Keys collection, check for key.StartsWith("ListItem") and if so use that key to get the value from the value provider (using the GetValue method).