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

发布于 2024-08-27 10:43:26 字数 802 浏览 9 评论 0原文

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

<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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦里寻她 2024-09-03 10:43:26

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

If you want to iterate over the form values, use Request.Form.

青丝拂面 2024-09-03 10:43:26

您可以使用 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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文