我的答案是,我是否可以像在MVC 2中一样,使用lambda表达式绑定IDictionary属性以获得简单属性?
我知道如何通过字符串属性路径使用旧的MVC表示法绑定IDictionary。但所有应用程序中的其余模型属性都是通过lambda表达式使用新的MVC 2方法操作的。因此,我非常不喜欢使用旧的模型绑定方式。
我还看到一篇文章
Model Binding To A List
菲尔·哈克在他的博客上发表的。但在那篇文章中,菲尔展示了如何使用lambda来绑定列表,而不是用于双性恋。我尝试对字典类型的属性进行类似的操作,但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" />