代码之家  ›  专栏  ›  技术社区  ›  aster.x

是否可能使用lambda绑定IDictionary?

  •  1
  • aster.x  · 技术社区  · 14 年前

    我的答案是,我是否可以像在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" />
    
    1 回复  |  直到 13 年前
        1
  •  0
  •   Allen Wang    13 年前

    您的DictionaryProperty可能需要类似于OrderedDictionary类的内容。

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