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

时间:2012-06-13 22:17:44

标签: asp.net-mvc-3

扩展a previous question,我正在使用EditorFor编辑类型对象列表(比方说)Hobby

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

我在MVC 2中阅读了Steven Anderson's blog关于如何做到这一点。但是,他使用循环和RenderPartial渲染各个Hobby实例,而不是使用EditorFor。我理解他使用Ajax调用渲染另一个局部视图并将视图结果插入DOM的方法,但不知道如何在我的情况下使用EditorFor来应用Ajax添加。

他的代码:

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

我的代码正在使用EditorFor:

// Model is a List<Hobby>
@Html.EditorFor(model => model.AllowedSurveys)

如果编辑器是作为编辑模板而不是部分视图实现的,我如何添加额外的Hobby编辑器?

1 个答案:

答案 0 :(得分:3)

您可以使用部分替换编辑器模板:

@foreach (var item in Model.AllowedSurveys)
{
    Html.RenderPartial("_Hobby", item);
}

并在部分(~/Views/controllerName/_Hobby.cshtml)内部:

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

Html.BeginCollectionItem自定义帮助程序用于生成带有Guids的名称,并允许使用javascript重新排序并向集合添加新项目。您可以从updated article下载。您正在阅读的是ASP.NET MVC 1并且已经过时了。

相关问题