2009-02-22 64 views
2

我使用ASP.NET MVC RC1,并试图以一个文本框绑定到一个对象的属性,像这样:如何绑定到ASP.NET MVC中的特定数组元素?

<%= Html.TextBox("Comments.Contacts[0].ContactName") %> 

好像它应该工作,因为这样做:

<%= ((MuralProject)ViewData.Model).Comments.Contacts[0].ContactName %> 

但唉,文本框中的结果是一个空字符串。难道我做错了什么?

回答

3

文本框扩展方法的第一个参数设置最终创建的输入元素的名称,并尝试基于该参数从ViewData/Model(对于使用TypeDescriptors/reflection的模型)获取条目。

它这样做的方式就是将输入字符串分解为点,然后通过反射检查ViewDataDictionary和模型,以便在给定的情况下尝试查找Contacts [0]而不是比联系人,并不会拿起你的财产。

为了解决这个问题,你只需要提供对象的实际值,例如

Html.TextBox("Comments.Contacts[0].ContactName", 
      Model.Comments.Contacts[0].ContactName) 

如果您查看MVC源代码并查看ViewDataDictionary类,您可以自己查看。

+0

有趣。没有数组,它似乎只能使用一个参数。谢谢。 – paulwhit 2009-02-22 20:24:31

相关问题