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:在链接中传递查询参数的主要内容,如果未能解决你的问题,请参考以下文章

Razor 页面链接忽略路由参数

在 ASP.NET Core Razor 页面中使用 JavaScript 更改活动导航栏链接

使用 Razor Pages 在路由中间定义所需的路径参数?

ASP.NET Razor Pages 路由参数命名页面

适用于 iOS 的 Firebase 动态链接 - 查询参数未从 iTunes Store 传递

当其他输入验证验证失败时,Razor Pages textarea 输入只会增长和增长