razor - AddRazorPagesOptions Conventions.AddPageRoute 中的野猫

标签 razor asp.net-core asp.net-core-2.0

我有这个代码:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddRazorPagesOptions(options => {
            options.Conventions.AddPageRoute("/Index", "Index.html");
            options.Conventions.AddPageRoute("/rt", "rt.html");
        });
}

是否可以使用这样的一条野猫路线,而不是编写每一页?

options.Conventions.AddPageRoute("/*", "/{*.html}");

最佳答案

没有内置方法来添加此类通配符路由。但是,您可以通过简单的页面路由约定(IPageRouteModelConvention 的实现)来实现它。这是一个工作示例:

public class HtmlExtensionPageRouteModelConvention : IPageRouteModelConvention
{
    public void Apply(PageRouteModel model)
    {
        var selectorCount = model.Selectors.Count;
        for (var i = 0; i < selectorCount; ++i)
        {
            var attributeRouteModel = model.Selectors[i].AttributeRouteModel;
            if (String.IsNullOrEmpty(attributeRouteModel.Template))
            {
                continue;
            }

            attributeRouteModel.SuppressLinkGeneration = true;
            model.Selectors.Add(new SelectorModel
            {
                AttributeRouteModel = new AttributeRouteModel
                {
                    Template = $"{attributeRouteModel.Template}.html",
                }
            });
        }
    }
}

配置:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddRazorPagesOptions(options => {
            options.Conventions.Add(new HtmlExtensionPageRouteModelConvention());
        });
}

Sample Project on GitHub

关于razor - AddRazorPagesOptions Conventions.AddPageRoute 中的野猫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49709615/

相关文章:

c# - 如何在 .NET Core 2 classlib 项目中使用 C# 从 .csproj 文件读取/获取 PropertyGroup 值?

c# - 将 Serilog 与 Azure 日志流结合使用

c# - 创建下拉列表asp.net核心

asp.net-core - 在 Visual Studio blazor 项目中设置起始路线

c# - 如何在 Razor 语法中将 @ 符号用作字符串

asp.net-core - 如何在 ASP .Net Core MVC Web 应用程序中设置视频背景

c# - 如何将 scaffold-dbcontext 到不同的文件夹?

c# - 如何使用 Angular 取消 .Net Core Web API 请求?

javascript - 如何将模型字段传递给 View 中的 Javascript 函数?

razor - 无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 3.1.1