Razor Pages:在链接中传递查询参数
Posted
技术标签:
【中文标题】Razor Pages:在链接中传递查询参数【英文标题】:Razor Pages: Passing query parameters in a link 【发布时间】:2020-12-24 07:46:22 【问题描述】:我在剃须刀页面试过:
<div>
@foreach (var cat in Model.Categories)
<a asp-page="/Index?catId=@cat.Id">@cat.Name</a>
</div>
在cs文件中:
public void OnGet()
CurPage = 1;
CatId = -1;
Search = "";
HasCarousel = false;
Title = "All Products";
var queryParams = Request.Query;
foreach(var qp in queryParams)
if (qp.Key == "curPage") CurPage = int.Parse(qp.Value);
if (qp.Key == "catId") CatId = int.Parse(qp.Value);
if (qp.Key == "search") Search = qp.Value;
if (qp.Key == "hasCarousel") HasCarousel = bool.Parse(qp.Value);
但是当我单击链接时,地址中没有添加任何查询参数,并且 Request.Query 为空。 我究竟做错了什么?或者通过链接将查询参数传递给剃须刀页面的正确方法是什么?
【问题讨论】:
【参考方案1】:要向链接添加查询参数,您可以在 a
标记中使用 asp-route-
。
在你的情况下,它看起来像
<a asp-page="Index" asp-route-catId="@cat.Id">@cat.Name</a>
您还使在 OnGet() 中接收查询参数变得比原来更难。您可以将参数添加到您的方法签名中,例如
OnGet(int catId)
它们将由查询参数传入。
【讨论】:
以上是关于Razor Pages:在链接中传递查询参数的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET Core Razor 页面中使用 JavaScript 更改活动导航栏链接
使用 Razor Pages 在路由中间定义所需的路径参数?