我的答案是,无论如何我可以使用lambda表达式绑定一个IDictionary属性,就像在MVC 2中为简单属性所做的那样?
我知道如何通过字符串属性路径使用旧的MVC表示法绑定IDictionary。但是,所有应用程序中的所有其他模型属性都使用新的MVC 2方法,通过lambda表达式进行操作。因此,我极不喜欢应用旧式的模型绑定。
我还看到Phil Haack在他博客中发表的一篇文章Model Binding To A List。但在那篇文章中,Phil展示了如何使用lambdas仅为Lists进行绑定,而不是为Dicrionaries进行绑定。我尝试与Dictionary类型属性类似,但DefaultModelBinder无法识别它们。
示例:
绑定是:
<%= Html.TextBoxFor(model => model.DictionaryProperty[key].Title)%>
渲染的html是:
<input id="DictionaryProperty_one__Title" name="DictionaryProperty[one].Title" type="text" value="" />
我会因任何有用的建议而受到指定。
UPD:当然指定了上面提到的字典属性的索引:
视图:
<%= Html.Hidden("DictionaryProperty.index",key)%>
渲染html:
<input id="DictionaryProperty_index" name="DictionaryProperty.index" type="hidden" value="one" />
答案 0 :(得分:0)
你可能需要像DictionaryProperty
这样的OrderedDictionary类http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx