我有一个类:
public class Book
{
public int BookId { get; set; }
public string BookName { get; set; }
public string Description { get; set; }
}
和编辑器模板:
@model MySimpleEditorTemplate.Models.Book
@Html.DisplayFor(p => p.BookId) @Html.EditorFor(p => p.BookId)
@Html.DisplayFor(p => p.BookName) @Html.EditorFor(p => p.BookName)
@Html.DisplayFor(p => p.Description) @Html.EditorFor(p => p.Description)
我可以使用这样的编辑器模板:
@Html.EditorFor(model => model.Book)
然而,如果我想拥有两个编辑器模板或两个显示模板并使用同一个类中的一个或另一个,该怎么办?这可能吗?
答案 0 :(得分:13)
是的,您可以使用名称为Book.cshtml
的“默认”...并且每次使用EditorFor
时都会触发此默认值。
您可以为Book设置另一个编辑器模板,让我们称之为BookTheOtherWay.cshtml
并在那里放置“其他编辑器视图”。现在,使用EditorFor
时,您只需要将模板名称作为EditorFor模板中的其他参数传递。
@Html.EditorFor(model => model.MyBook, "BookTheOtherWay" )
对于DisplayTemplates和DisplayFor
帮助程序,它的工作方式相同。
@Html.DisplayFor(model => model.MyBook, "BookTheOtherWay" )
答案 1 :(得分:4)
是
public static MvcHtmlString EditorFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
string templateName
)
http://msdn.microsoft.com/en-us/library/ff406506.aspx
“如果在控制器的EditorTemplates文件夹中找到名称与templateName参数匹配的模板,则该模板用于呈现表达式。如果在控制器的EditorTemplates文件夹中找不到模板,则Views \ Shared \ EditorTemplates文件夹为搜索了与templateName参数名称匹配的模板。如果找不到模板,则使用默认模板。“