Asp.net mvc 3 在MVC 3中使用编辑器模板和EditorFor时动态添加行

Asp.net mvc 3 在MVC 3中使用编辑器模板和EditorFor时动态添加行,asp.net-mvc-3,Asp.net Mvc 3,继续扩展,我使用EditorFor编辑类型为(比如)Hobby的对象列表 现在,我需要实现为单个Hobby对象添加编辑器的功能,以便用户可以添加其他嗜好 我在MVC2中读到了如何做到这一点。但是,他使用循环和RenderPartial渲染各个嗜好实例,而不是使用EditorFor。我理解他通过Ajax调用呈现另一个局部视图并将视图结果插入DOM的方法,但不知道如何在我的例子中使用EditorFor应用Ajax add 他的代码: <% foreach (var item in Model)

继续扩展,我使用EditorFor编辑类型为(比如)Hobby的对象列表

现在,我需要实现为单个
Hobby
对象添加编辑器的功能,以便用户可以添加其他嗜好

我在MVC2中读到了如何做到这一点。但是,他使用循环和RenderPartial渲染各个嗜好实例,而不是使用EditorFor。我理解他通过Ajax调用呈现另一个局部视图并将视图结果插入DOM的方法,但不知道如何在我的例子中使用EditorFor应用Ajax add

他的代码:

<% foreach (var item in Model)
    Html.RenderPartial("GiftEditorRow", item);
%>

我的代码正在使用EditorFor,如下所示:

// Model is a List<Hobby>
@Html.EditorFor(model => model.AllowedSurveys)
//模型是一个列表
@EditorFor(model=>model.AllowedSurveys)

如果编辑器是作为编辑器模板而不是局部视图实现的,如何添加额外的业余爱好编辑器?

您可以使用局部视图替换编辑器模板:

@foreach (var item in Model.AllowedSurveys)
{
    Html.RenderPartial("_Hobby", item);
}
在部分(
~/Views/controllerName/\u Hobby.cshtml
)中:

@model
@使用(Html.BeginCollectionItem(“AllowedSurveys”))
{
@EditorFor(x=>x.Name)
...
}
Html.BeginCollectionItem
自定义帮助程序用于生成带有GUID的名称,并允许使用javascript对集合重新排序和添加新项。您可以从下载。您正在阅读的是ASP.NET MVC 1,已过时

@model Hobby
<div class="editorRow">
    @using(Html.BeginCollectionItem("AllowedSurveys")) 
    {
        @Html.EditorFor(x => x.Name)
        ...
    }
</div>