我有一个强类型的 Razor 2 编辑器模板。当视图模型满足某些条件时,我希望视图委托给相同类型的替代模板。我使用 EditorFor 助手的 TemplateName 参数来选择替代模板:
@model MyType
@if (Model.IsSpecialCase)
{
@Html.EditorFor(m => m, "SpecialCaseTemplate")
}
else
{
@* Default markup *@
}
问题是,Razor 没有调用替代模板;它只是简单地传递了 EditorFor 方法。如果我更改第二个模板的类型,它会正确显示。我可以使用部分视图来解决这个问题,但我不想这样做,因为我有一个与我想坚持的编辑器模板一起使用的方案。
有谁知道我怎样才能让它工作?
编辑
看起来这与此处描述的行为有关:ASP.net MVC - Using EditorFor with the same model type two。简而言之,MVC 不支持对同一对象使用两次 EditorFor 方法。