2

扩展上一个问题,我使用 EditorFor 来编辑类型对象的列表(比方说)Hobby

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

我阅读了Steven Anderson 的关于如何在 MVC 2 中执行此操作的博客。但是,他使用循环和 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)

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

4

1 回答 1

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定义助手用于生成带有 Guid 的名称,并允许使用 javascript 重新排序和添加新项目到集合中。您可以从更新的文章中下载它。您正在阅读的是 ASP.NET MVC 1 并且已过时。

于 2012-06-14T05:37:52.550 回答