2010-02-23 68 views
9

我想用一个前缀绑定的集合,像这样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中去掉前缀并删除绑定属性,一切工作正常。我无法想象默认模型联编程序不会处理集合上的前缀,所以我必须做错了什么。

请帮忙。干杯!

回答

10

前缀里面的[Bind]不会附加到参数名称上,它会完全替换参数名称。所以,如果你的操作方法有此签名:

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

的粘结剂预计foo[0]foo[1]

+0

DOH!艰难的一天。感谢您设置我的头直! – spot 2010-02-24 03:16:35

1

UpdateModel()和TryUpdateModel()取前缀参数。你尝试过吗?