给出以下视图模型:
class DetailsViewModel
{
public HeaderViewModel Header {get;set;}
public FooterViewModel Footer {get;set;}
}
我正在使用标题视图模型的编辑器模板:
<%: Html.EditorFor(x => x.Header) %>
编辑器模板(EditorTemplates / HeaderViewModel.ascx)
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<HeaderViewModel>" %>
<% ViewData.TemplateInfo.HtmlFieldPrefix = ""; %>
<%: Html.EditorFor(x => x.Search) %>
结果:
<input type="text" value="" name="Search" id="Search" />
如果我删除该行
<% ViewData.TemplateInfo.HtmlFieldPrefix = ""; %>
结果是:
<input type="text" value="" name="Header.Search" id="Header_Search" />
是否有其他方法可以实现相同的效果 - 渲染没有前缀的控件名称?
我正在考虑帮助者:
public static MvcHtmlString EditorWithoutPrefix<TModel, TValue>(
this HtmlHelper<TModel> html, TValue value)
{
var htmlHelper =... // create new HtmlHelper<TValue> and set it's model to be 'value' argument
return htmlHelper.EditorForModel();
}
并使用它:
<%: Html.EditorWithoutPrefix(Model.Header) %>
但它会抛出异常。
或许你知道另一种优雅的方式来呈现没有前缀的名字吗?
答案 0 :(得分:6)
您可以使用proper overload:
<%: Html.EditorFor(x => x.Search, "SearchViewModel", "") %>