我该如何配置我的 Razor 页面,使其接受多个路由?例如,如果我有一个 Razor 页面 ./Pages/Inovices/Overview.cshtml,我需要让该页面处理~/invoices和~/invoices/overview的请求。目前我正在使用 Index.cshtml 上的处理程序方法,但感觉应该有更简单的方法。你有什么想法吗?
您可以使用AddPageRoute
为您的页面添加一个约定。下面是示例:
services.AddMvc(...)
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Invoices/Overview", "invoices");
});
HandleRedirects
方法,定义了重定向中间件以及要重定向的路由:private void HandleRedirects(IApplicationBuilder app)
{
// Old Url, New Url
var redirects = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{"/Reports/BatchReport", "/Reports/BatchDetailReport" }
};
app.Use(async (context, next) =>
{
if (redirects.TryGetValue(context.Request.Path, out var redirectUrl))
{
context.Response.Redirect(redirectUrl);
return;
}
await next();
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
HandleRedirects(app);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// ...
}