ASP.NET Razor Pages路由参数名为page

时间:2018-01-29 10:00:25

标签: c# asp.net razor

我想在我的剃刀页面应用程序中使用名为page的url参数:

http://example.com/Dataset/0?page=X

我尝试使用这样的锚标记助手:

<a asp-page="Dataset" asp-route-id="@(dataset.Id)" asp-route-page="@(pageNumber)">@(dataset.Title)</a>

但这不起作用,似乎asp-page和asp-route-page相互冲突,结果是:

http://example.com/Dataset/0

上面的内容可以通过在html中输入来轻松解决,因此它不是真正的问题。

真正的问题:我尝试手动将?page = 100添加到url的末尾,我检查了OnGet方法中的值及其0,就好像参数丢失一样。

编辑:当您在浏览器中访问剃刀页面时调用此方法,该方法的参数与url查询中的参数具有相同的名称,它们会自动从查询中填充,< strong>页面参数

除外
public FileResult OnGet(int id, string subject, string predicate, string @object, int page)
    {
        // page==0 in this scope even if the query is ?page=30 etc
        // other parameters work fine
    }

3 个答案:

答案 0 :(得分:0)

有几种方法可以在Razor语法中发送参数。 你可以使用

@Html.ActionLink("Title","0","Dataset",new{page=100})

或者您可以使用以下标签:

<a href="http://example.com/Dataset/0?page=@pageNumber">@dataset.Title</a>

答案 1 :(得分:0)

您不能将页面用作剃刀页面的路由值,因为剃刀页面引擎会使用该路由值。

raozor页面的路径作为路径值添加到路径diccionary值,并带有页面键,因此只需更改路线值的名称。

答案 2 :(得分:0)

在此背景下&#34; Page&#34;是一个保留的术语,所以你不应该在你的路线中使用它,否则会混淆路由引擎。

马歇尔