【问题标题】:EditorFor collection of items in my modelEditorFor 在我的模型中收集项目
【发布时间】:2011-08-11 01:05:36
【问题描述】:

我的 ViewModel 有一个属性,它是我的另一个模型实体的集合,在本例中是 CategoryTags(每个标签都有一个标签和一个 ID)。

1) 我是否正确理解 Html.EditorFor() 没有可以为 ICollection 创建的 UI?

2) 假设 #1,我决定制作一个 EditorTemplate,它是一个文本框,我的用户可以在其中键入以逗号分隔的标签名称,并且 jquery 将自动完成。我是否必须传回标签名称列表(或它们各自的 ID),然后在 POST 上将它们解析回 CategoryTags 属性?

谢谢!

【问题讨论】:

    标签: asp.net-mvc-3 viewmodel editorfor


    【解决方案1】:
    1. 正确 - 您需要自己的模板(请参阅 http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3
    2. 是的,这可以工作 - 如果模型绑定器被命名为正确的事物 id[0] 等,它们将正确填充。请参阅 Phil Haack 的文章:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

    编辑#2 - 我读错了你原来的帖子。如果将它们全部放入一个文本框中,则需要解析它们(或创建自己的模型绑定器)。你可以有一个编辑器,为每个项目添加新的文本框到 DOM,然后模型绑定器将正确地重新填充列表。但是,在您提到的情况下,您的选择是在服务器上手动执行此操作,或者使用您自己的模型绑定器(这在此处相当容易)将它们分解为模型。要么:)

    【讨论】:

    • 谢谢亚当。听起来像您描述的方法,为每个选择的项目添加一个新的 tb 到 DOM,是“正确”的方法。也许我会复制标签在输入框下方累积的stackoverflow方法
    • 附录:您链接的 jarrettmeyer 的那篇文章真的很棒。
    • 仅供参考,第一个链接已损坏。这是 Google 的缓存:webcache.googleusercontent.com/…
    • 第一个链接(到 jarrettmeyer.com)今天有效,值得一读并为此答案 +1。
    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 2013-12-20
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多