当视图位于 Views 文件夹之外时,标记帮助程序不会解析
Tag helpers do not resolve when view is outside the Views folder
使用 Asp .Net 5 beta 6
,当视图位于 Views
文件夹之外时,标签助手不会解析。我想要的文件夹结构是基于功能而不是文件类型的。我希望将控制器、视图模型和特定功能的视图组合在一个反映控制器名称的文件夹中。这是我希望在项目中使用的文件夹结构示例:
UI
- Account
- AccountController.cs
- AccountViewModels.cs
- Login.cshtml
- Register.cshtml
- Students
- StudentsController.cs
- StudentsViewModels.cs
- CaptureStudent.cshtml
为此,我创建了一个自定义视图引擎:
public class CustomUIViewEngine : RazorViewEngine
{
public CustomUIViewEngine(IRazorPageFactory pageFactory,
IRazorViewFactory viewFactory,
IOptions<RazorViewEngineOptions> optionsAccessor,
IViewLocationCache viewLocationCache) :
base(pageFactory, viewFactory, optionsAccessor, viewLocationCache)
{
}
public override IEnumerable<string> ViewLocationFormats
{
get
{
var viewLocationFormats = base.ViewLocationFormats
.Union(new string[] { "~/UI/{1}/{0}.cshtml" });
return viewLocationFormats;
}
}
}
其中我在startup.cs
注册如下:
services.AddMvc().ConfigureMvcViews(options =>
{
options.ViewEngines.Clear();
options.ViewEngines.Add(typeof(CustomUIViewEngine));
});
这个自定义视图引擎确实有效,并且视图被定位和呈现,唯一的问题是 tag helpers
没有正确呈现,所以不要看到这个:
<form method="post" class="form-horizontal" role="form" action="/Account/Login">
我在呈现的源代码中看到了这个:
<form asp-controller="Account" asp-action="Login" method="post" class="form-horizontal" role="form">
有谁知道当视图位于 Views 文件夹之外时 tag helpers
无法正确呈现的原因,以及是否有任何方法可以在 Asp.Net 5
网络应用程序中更正此问题?
您是否将 TH 添加到 _ViewImports 文件中,如果是,是否识别了 using 语句?您是否尝试过将 @addTagHelper 直接添加到视图中?
我的 Authoring Tag Helpers 中提到了其中一些内容
我将在下一篇文章中详细介绍继承层次结构、添加、删除。
使用 Asp .Net 5 beta 6
,当视图位于 Views
文件夹之外时,标签助手不会解析。我想要的文件夹结构是基于功能而不是文件类型的。我希望将控制器、视图模型和特定功能的视图组合在一个反映控制器名称的文件夹中。这是我希望在项目中使用的文件夹结构示例:
UI
- Account
- AccountController.cs
- AccountViewModels.cs
- Login.cshtml
- Register.cshtml
- Students
- StudentsController.cs
- StudentsViewModels.cs
- CaptureStudent.cshtml
为此,我创建了一个自定义视图引擎:
public class CustomUIViewEngine : RazorViewEngine
{
public CustomUIViewEngine(IRazorPageFactory pageFactory,
IRazorViewFactory viewFactory,
IOptions<RazorViewEngineOptions> optionsAccessor,
IViewLocationCache viewLocationCache) :
base(pageFactory, viewFactory, optionsAccessor, viewLocationCache)
{
}
public override IEnumerable<string> ViewLocationFormats
{
get
{
var viewLocationFormats = base.ViewLocationFormats
.Union(new string[] { "~/UI/{1}/{0}.cshtml" });
return viewLocationFormats;
}
}
}
其中我在startup.cs
注册如下:
services.AddMvc().ConfigureMvcViews(options =>
{
options.ViewEngines.Clear();
options.ViewEngines.Add(typeof(CustomUIViewEngine));
});
这个自定义视图引擎确实有效,并且视图被定位和呈现,唯一的问题是 tag helpers
没有正确呈现,所以不要看到这个:
<form method="post" class="form-horizontal" role="form" action="/Account/Login">
我在呈现的源代码中看到了这个:
<form asp-controller="Account" asp-action="Login" method="post" class="form-horizontal" role="form">
有谁知道当视图位于 Views 文件夹之外时 tag helpers
无法正确呈现的原因,以及是否有任何方法可以在 Asp.Net 5
网络应用程序中更正此问题?
您是否将 TH 添加到 _ViewImports 文件中,如果是,是否识别了 using 语句?您是否尝试过将 @addTagHelper 直接添加到视图中?
我的 Authoring Tag Helpers 中提到了其中一些内容 我将在下一篇文章中详细介绍继承层次结构、添加、删除。