映射页面路由后如何禁用pageName?

时间:2018-11-01 06:56:58

标签: c# asp.net-core razor-pages

我正在将ASP.NET Core与 Pages 一起使用,并且创建了一个像这样的控制器:

namespace Demo.Pages.Channel
{
    public class IndexModel : PageModel
    {
        public string ChannelUrl { get; set; }

        public void OnGet(string url)
        {
            ChannelUrl = url;
        }
    }
}

我已经尝试绘制路线:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AddPageRoute("/channel/index", "/{url}");
        options.Conventions.AddPageRoute("/home/error", "/channel/index");
    });

这些是我测试过的一些情况:

1

2

工作正常。但是当我尝试时,它仍然有效

3

在以上选项中,我已将URL /channel/index映射到错误页面/home/error,但该页面无法重定向。为什么?

我要映射网址,例如:localhost:44392/{url},但是localhost:44392/channel/index

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我拥有的解决方案使我很难理解为什么我们需要使用此配置:

.AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRoute("/channel/index", "/{url}");
    //options.Conventions.AddPageRoute("/home/error", "/channel/index");
});

要映射路线,我们在剃须刀页面上进行如下配置:

<!-- index.cshtml -->
@page "/{url}"

<!-- profile.cshtml -->
@page "/users/{userId}/profile"

<!-- error.cshtml -->
@page "/custom/error"

因此,我们需要删除配置.AddRazorPagesOptions()