ASP.NET MVC模型使用前缀绑定集合

时间:2010-02-23 15:03:06

标签: asp.net-mvc

我想使用前缀绑定集合,如此

public ActionResult Whatever([Bind(Prefix = "Prefix")] CustomModel[] models)

我使用

创建了表单元素
<%= Html.TextBox("Prefix.models[" + i + "].Property") %>

生成像这样的HTML输入

<input id="Prefix_models[0]_Property" name="Prefix.models[0].Property" />

我的问题是默认模型绑定器不会与前缀绑定。我在动作方法中为模型arg得到null。

如果我从html中删除前缀并删除Bind属性,一切正常。我无法想象默认模型绑定器不会处理集合上的前缀,所以我一定做错了。

请帮忙。干杯!

2 个答案:

答案 0 :(得分:11)

[Bind]中的

前缀不会添加到参数名称前面,它会完全替换参数名称。因此,如果您的操作方法具有此签名:

public ActionResult MyAction([Bind(Prefix = "foo")] string[] bar) { ... }

活页夹需要foo[0]foo[1]

答案 1 :(得分:1)

UpdateModel()和TryUpdateModel()接受前缀参数。你试过了吗?