微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-core – 当视图位于Views文件夹之外时,标记帮助程序无法解析

使用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));
        });

这个自定义视图引擎确实有效,并且视图被定位和渲染,唯一的问题是标记助手没有被正确渲染,所以不要看到这个:

<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文件夹之外并且在Asp.Net 5 Web应用程序中是否有任何方法可以解决此问题时,是否有人知道为什么标记帮助程序无法正确呈现?

解决方法

您是否在_ViewImports文件添加TH,如果是,则识别using语句?您是否尝试将@addTagHelper直接添加到视图中?

其中一些在我的Authoring Tag Helpers中提到过我将在接下来的文章中详细介绍继承层次结构,添加删除.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐