我在剃须刀页面尝试过:
<div>
@foreach (var cat in Model.Categories)
{
<a asp-page="/Index?catId=@cat.Id">@cat.Name</a>
}
</div>
Run Code Online (Sandbox Code Playgroud)
在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);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我单击链接时,不会向地址添加任何查询参数,并且 Request.Query 为空。我究竟做错了什么?或者通过链接将查询参数传递到剃刀页面的正确方法是什么?
小智 8
要将查询参数添加到链接中,您可以asp-route-在a标记中使用。在你的情况下它看起来像
<a asp-page="Index" asp-route-catId="@cat.Id">@cat.Name</a>
Run Code Online (Sandbox Code Playgroud)
您还使在 OnGet() 中接收查询参数变得比原来更困难。您可以将参数添加到方法签名中,例如
OnGet(int catId)
Run Code Online (Sandbox Code Playgroud)
它们将通过查询参数传入。
| 归档时间: |
|
| 查看次数: |
4196 次 |
| 最近记录: |