映射页面路由后如何禁用pageName?
How to disable pageName after mapping page route?
我正在使用 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");
});
这些是我测试过的一些案例:
它工作正常。但是当我尝试时它仍然 有效 :
在上面的选项中,我已将 url /channel/index
映射到错误页面 /home/error
但无法重定向该页面。为什么?
我想将 url 映射为:localhost:44392/{url}
,但是 localhost:44392/channel/index
我该怎么做?
我得到的解决方案让我很难理解为什么我们需要使用这个配置:
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/channel/index", "/{url}");
//options.Conventions.AddPageRoute("/home/error", "/channel/index");
});
为了映射路线,我们在 razor 页面中这样配置:
<!-- index.cshtml -->
@page "/{url}"
<!-- profile.cshtml -->
@page "/users/{userId}/profile"
<!-- error.cshtml -->
@page "/custom/error"
所以,我们需要删除配置.AddRazorPagesOptions()
。
我正在使用 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");
});
这些是我测试过的一些案例:
它工作正常。但是当我尝试时它仍然 有效 :
在上面的选项中,我已将 url /channel/index
映射到错误页面 /home/error
但无法重定向该页面。为什么?
我想将 url 映射为:localhost:44392/{url}
,但是 localhost:44392/channel/index
我该怎么做?
我得到的解决方案让我很难理解为什么我们需要使用这个配置:
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/channel/index", "/{url}");
//options.Conventions.AddPageRoute("/home/error", "/channel/index");
});
为了映射路线,我们在 razor 页面中这样配置:
<!-- index.cshtml -->
@page "/{url}"
<!-- profile.cshtml -->
@page "/users/{userId}/profile"
<!-- error.cshtml -->
@page "/custom/error"
所以,我们需要删除配置.AddRazorPagesOptions()
。