这个问题是由标签助手上下文在使用编辑器模板时没有保留引起的。为了解决这个问题,可以手动传递标签助手上下文,以确保它在编辑器模板中得到正确的维护。下面是一个代码示例:
在视图中调用编辑器模板时传递上下文:
@model MyViewModel
@{
ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
}
@Html.EditorFor(model => model.MyProperty, new {context = this.ViewContext});
然后在编辑器模板中使用传递的上下文:
@model MyPropertyType
@{
var context = (ViewContext)ViewData["context"];
var fullName = context.ViewData.TemplateInfo.GetFullHtmlFieldName("");
var value = context.ViewData.ModelExplorer.GetSimplePropertyAccess().CurrentValue;
}
使用这种方法,标签助手上下文将在编辑器模板中得到正确的维护,解决了这个问题。