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

时间:2010-07-13 16:12:01

标签: c# asp.net-mvc-2 viewmodel editortemplates

我有一个继承的编辑器模板(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"})%>

最终我要做的是传递下拉列表的数据,但是,目前,我只是想传递一个字符串“hello”

如果我将以下内容嵌入HORDER.ascx

<%: ViewData.Count() %>

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

但是,如果我使用单个项目的EditorFor,它按预期工作:我将FirstHorder添加到我的viewmodel,设置为model.PEOPLE.HORDERS.First()然后&lt;%:Html.EditorFor(model =&gt; model .FirstOrder,new {fred =“hello”})%&gt;按预期传递你好。

那么......有没有办法让EditorFor在使用一对多关系调用时使用其他数据?

编辑: 在其他地方已经建议我在针对单个HORDERS的ForEach循环中使用EditorFor。这是有效的(即正确传递了附加的视图数据),但我最终得到了由EditorFor呈现的每个控件具有相同的id和名称而不是PEOPLE.HORDERS [n] .field这是不可取的。

1 个答案:

答案 0 :(得分:0)

经过多次搞乱后,似乎无法做到这一点:我认为这是框架中的一个错误。解决方法是在EditorFor调用之前将其插入到viewdata中。