TemplateEditor中的标记助手不会根据TemplateEditor的位置进行绑定

时间:2016-07-21 02:53:43

标签: asp.net-mvc razor asp.net-core .net-core

我使用区域来划分我的应用程序,一切都按预期工作,包括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值。由于某种原因,输入标记助手无法处理。

1 个答案:

答案 0 :(得分:0)

我的问题遗漏的是我有@addTagHelper指令的地方。

我在这里有他们:

Areas\Area1\Views\_ViewImports.cshtml

但不是在这里:

Views\_ViewImports.cshtml

我忘记了我甚至不得不这样做 - 感谢@dougbu在https://github.com/aspnet指出这一点。