我正在使用ASP.NET MVC RC1并尝试将文本框绑定到对象属性,如下所示:
<%= Html.TextBox("Comments.Contacts[0].ContactName") %>
它似乎应该有效,因为这样做:
<%= ((MuralProject)ViewData.Model).Comments.Contacts[0].ContactName %>
但是,文本框中的结果是一个空字符串。我做错了吗?
答案 0 :(得分:3)
文本框扩展方法的第一个参数设置最终创建的输入元素的名称,并尝试根据该参数从ViewData / Model(对于使用TypeDescriptors / reflection的模型)中获取条目。
这样做的方法就是将输入字符串分成点,然后通过反射检查ViewDataDictionary的特定键和模型,这样在你给它的情况下,你会尝试查找Contacts [0]而不是联系方式,不会收取您的财产。
要解决此问题,您只需提供对象的实际值,例如
Html.TextBox("Comments.Contacts[0].ContactName",
Model.Comments.Contacts[0].ContactName)
如果您查看MVC源代码并查看ViewDataDictionary类,您可以自己看看。