【发布时间】:2021-04-13 05:38:45
【问题描述】:
我正在构建一个 ASP.NET Core 5.0 Web 应用程序。它必须支持具有旧 URL 的用户,例如。 contoso.com/privacy.aspx?EmpNo=12&Date=2021-01-07
URL 应该被路由到类似的东西 contoso.com/privacy/12/2021-01-07
目前我的privacy.cshtml中有这个
@page "{id:int?}/{date:datetime?}"
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"] @RouteData.Values["id"] @RouteData.Values["date"]</h1>
在我的 Startup.cs 中,我已经让它工作了
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseExceptionHandler("/Error");
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapGet("privacy.aspx", async context =>
{
await Task.Run(() => context.Response.Redirect("/privacy"));
});
});
}
这只会将privacy.aspx 重定向到/privacy。 当我尝试添加查询参数时,它失败了:RoutePatternException:文字部分'privacy.aspx?EmpNo='无效。文字部分不能包含“?”字符。
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages()
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/privacy", "privacy.aspx?EmpNo={id}&Date={date}");
});
}
【问题讨论】:
标签: .net-core url-routing razor-pages