是否可以使用lambdas绑定IDictionary?

时间:2010-11-24 21:44:33

标签: asp.net-mvc asp.net-mvc-2

我的答案是,无论如何我可以使用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" />

1 个答案:

答案 0 :(得分:0)

你可能需要像DictionaryProperty

这样的OrderedDictionary类

http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx