我使用区域来划分我的应用程序,一切都按预期工作,包括EditorTemplate - 但仅限于某个位置的编辑器模板。我的项目设置如下(注意MyEditor.cshtml的位置):
\Areas\Area1\Controllers\TestController.cs
\Areas\Area1\Views\Test\Index.cshtml
\Areas\Area1\Views\Shared\EditorTemplates\MyEditor.cshtml
我在MyEditor.cshtml
内使用了EditorTemplate(MyViewIndex.cshtml
),当我将它放在上面列出的位置时,它可以正常工作。
然后我可以将MyEditor.cshtml
移动到MVC找到它的下一个位置,但不会呈现Tag Helpers:
\Views\Shared\EditorTemplates\MyEditor.cshtml
所以改为使用Tag帮助......
<input asp-for="Hello1" type="text" />
......像这样渲染:
<input value="ABC" type="text" id="Hello1" name="Hello1" />
...它输出到浏览器,就像从未处理过一样:
<input asp-for="Hello1" type="text" />
在视图Index.cshtml中我有:
@Html.EditorFor(model => model.Hello1, "MyEditor")
在MyEditor.cshtml里面我有:
Hello<br/>
@DateTime.Now<br/>
<input asp-for="OneEditorProperty1" type="text" />
我知道它找到了编辑器模板,因为它输出&#34; Hello&#34;我知道它在某种程度上处理它因为我看到DateTime.Now值。由于某种原因,输入标记助手无法处理。
答案 0 :(得分:0)
我的问题遗漏的是我有@addTagHelper指令的地方。
我在这里有他们:
Areas\Area1\Views\_ViewImports.cshtml
但不是在这里:
Views\_ViewImports.cshtml
我忘记了我甚至不得不这样做 - 感谢@dougbu在https://github.com/aspnet指出这一点。