我有一个编辑器模板,在该编辑器模板中,我想调用具有相同模型的另一个编辑器模板(即嵌套),但似乎没有显示.
即.\ EditorTemplates\Template1.cshtml
@model foo
// insert code here to edit the default fields.
// display extra fields via another editor template.
@Html.EditorForModel("Template2") // or @Html.EditorFor(m => m, "Template2")
Run Code Online (Sandbox Code Playgroud)
和\ EditorTemplates\Template2.cshtml
@model foo
@Html.TextBoxFor(m => m.Name)
Run Code Online (Sandbox Code Playgroud)
我相信有人会质疑为什么?好吧,只有满足条件时才会显示嵌套模板(即@if(@ Model.IsConditionMet){....}),但为了简单起见,我将其从原型中删除了.
我有一个编辑器模板位置:
地区/职位/查看/共享/ EditorTemplates/Question.cshtml
我也有一个:
/Views/Shared/EditorTemplates/Question.cshtml
对于两者,模型是相同的.
我想要做的是在该Posts区域的视图中,在该区域中调用我的编辑器模板,设置一些HTML,然后冒泡回到主共享编辑器模板.
这是PostsEditorTemplate:
@model xxx.ViewModels.QuestionViewModel
@Html.Hidden("Id", (byte)Model.QuestionType)
@Html.EditorForModel()
Run Code Online (Sandbox Code Playgroud)
但它只是渲染了隐藏字段,而不是共享编辑器模板的内容.
如果我删除了Posts编辑器模板,则会正确呈现共享模板.
我猜MVC/Razor认为这是递归的还是什么?就像我调用相同的模板?
有什么方法我可以告诉它去共享的吗?
本质上,我正在尝试在共享模板中重用HTML,但是注入了一些我自己的偷偷摸摸的HTML.