我正在将WebForms应用程序移植到Razor Pages,并且正在使用以下方法来防止破坏我的URL之一。
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Resources/CharClass", "/Resources/CharClass.aspx");
});
但是使用下面的代码,当我使用URL /Resources/CharClass.aspx?page=500 时,page
始终为空。
cshtml
@page "{page:int?}"
cshtml.cs
public void OnGet(int? page)
{
//
}
对于未通过这种方式路由的页面,该参数似乎可以正常工作。我怎么都可以?
答案 0 :(得分:0)
尝试:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Resources/CharClass", "/Resources/CharClass.aspx/{page?}");
});
答案 1 :(得分:0)
我怀疑您遇到的问题是参数名称-page
。这似乎与PageModel类的Page
属性冲突,并且在模型绑定期间没有任何绑定。但是,您可以使用传统方法访问查询字符串值:
var page = Request.Query["page"];
编辑:刚刚看到,您对此问题的另一个问题的答复部分涵盖了此问题:Razor page link ignores route argument