页面路由阻止OnGet()接收查询参数

时间:2019-08-07 17:13:08

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

我正在将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)
{
    //
}

对于未通过这种方式路由的页面,该参数似乎可以正常工作。我怎么都可以?

2 个答案:

答案 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