c# - 绑定(bind)到 ASP.NET MVC 中的强类型对象集合

标签 c# asp.net-mvc

我有一个包含多个字段的数据类:

public class Person
{
    public int id { get; set }
    public string Name { get; set; }
    public double Rate { get; set; }
    public int Type { get; set; }
}

如果我明白Scott Hanselman's take on binding arrays of objects ,我应该能够创建一个表单 View 来呈现如下所示的 HTML:

<input name="Person[0].id" value="26" type="hidden" />
<input name="Person[0].Name" value="Tom Smith" type="text" />
<input name="Person[0].Rate" value="40.0" type="text" />
<select name="Person[0].Type">
    <option selected="selected" value="1">Full Time</option>
    <option value="2">Part Time</option>
</select>

<input name="Person[1].id" value="33" type="hidden" />
<input name="Person[1].Name" value="Fred Jones" type="text" />
<input name="Person[1].Rate" value="45.0" type="text" />
<select name="Person[1].Type">
    <option value="1">Full Time</option>
    <option selected="selected" value="2">Part Time</option>
</select>

然后我应该能够使用如下所示的操作方法在我的 Controller 中捕获此数据:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult People(Person[] array)
{
    // Do stuff with array
}

但它不起作用。数组变量始终为空。我将此解释为数据绑定(bind)不起作用。但是为什么?

最佳答案

您的字段应命名为 array[0].id, array[0].Type, ...

它们应该具有数组实例的名称,而不是数组中类型的名称。

或者,您可以将 actioncontroller 的签名更改为: 人[]人

你明白了:-)

关于c# - 绑定(bind)到 ASP.NET MVC 中的强类型对象集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966923/

相关文章:

c# - 从更新面板回发后调用 javascript 代码

c# - C#如何获取前一天的名字

asp.net-mvc - OwinStartup 不触发

asp.net-mvc - 所有请求均收到HTTP错误401.2-未经授权的响应

c# - NMock3 如何模拟没有参数的方法?

asp.net-mvc - 如何编写 C# 扩展方法将域模型对象转换为接口(interface)对象?

c# - 将 XAML ObjectDataProvider 转换为 C#

c# - 在 C# 中使用字符串调用哈希表

c# - 使用 MVC/MCP 时如何在没有 switch 语句的情况下处理 UI 的派生类?

c# - 派生类在自己的静态方法中调用基类的静态方法