扩展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编辑器?
答案 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并且已经过时了。