代码之家  ›  专栏  ›  技术社区  ›  Andiih

在一对多关系中,使用EditorFor传递其他viewmodel数据失败

  •  0
  • Andiih  · 技术社区  · 14 年前

    我有一个编辑器模板(Views/Shared/EditorTemplates/HORDER.ascx),它继承

    System.Web.Mvc.ViewUserControl<CCOK2.Models.HORDER>
    

    我的viewmodel有一个一对多的关系,我使用Html.EditorFor来呈现多个HORDERS

    <%: Html.EditorFor(model => model.PEOPLE.HORDERS, new {fred="hello"})%>
    

    最终我要做的是为dropdownlist传递数据,然而,目前,我只是想传递一个字符串“hello”

    <%: ViewData.Count() %>
    

    我得到“0”输出。获取viewdata的任何尝试都失败。

    但是,如果我对单个项使用EditorFor,它将按预期工作:我将FirstHorder添加到viewmodel中,设置为model.PEOPLE.HORDERS.First()然后<%:Html.EditorFor(model=>model.FirstOrder,新{fred=“hello”})%>按预期传递问候。

    所以。。。当使用一对多关系调用EditorFor时,是否有任何方法可以让它处理其他数据?

    编辑: 有人建议我在ForEach循环中使用EditorFor来对付各个部落。这是可行的(即,额外的viewdata被正确地传递),但我最终得到的是editor呈现的每个控件都具有相同的id和名称,而不是PEOPLE.HORDERS[n].field,这是不可取的。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Andiih    14 年前

    在经历了许多混乱之后,似乎不可能做到这一点:我认为这是框架中的一个bug。解决方法是在EditorFor调用之前将其插入viewdata。