我正在使用 ASP.NET MVC RC1 并尝试将文本框绑定(bind)到对象属性,如下所示:
<%= Html.TextBox("Comments.Contacts[0].ContactName") %>
看起来它应该有效,因为它确实:
<%= ((MuralProject)ViewData.Model).Comments.Contacts[0].ContactName %>
但是可惜的是,文本框中的结果是一个空字符串。我做错了什么吗?
最佳答案
文本框扩展方法的第一个参数设置最终创建的输入元素的名称,并尝试根据该参数从 ViewData/Model 获取条目(对于使用 TypeDescriptors/反射的模型)。
它执行此操作的方式只是在点处分割输入字符串,然后通过反射检查 ViewDataDictionary 中的特定键和模型,因此在您给出的情况下,它将尝试查找 Contacts[0] 而不是会联系,但不会领取您的属性(property)。
要解决这个问题,您只需提供对象的实际值,例如
Html.TextBox("Comments.Contacts[0].ContactName",
Model.Comments.Contacts[0].ContactName)
如果您查看 MVC 源代码并查看 ViewDataDictionary 类,您可以自己看到这一点。
关于asp.net-mvc - 如何绑定(bind)到 ASP.NET MVC 中的特定数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575151/