如何将参数传递给 RazorPage OnGet()?

How do I pass a parameter to RazorPage OnGet()?

使用 razor 页面 我正在尝试建立一个销售服装的电子商务网站,我想使用一个页面作为模板来加载男装和女装页面。要测试这可以在我的 _Layout.cshtml 页面中完成,我使用 <a asp-page="/Shop" asp-route-id="Mens" class="nav-link">Mens</a> 然后在:

Shop.cshtml.cs

    [BindProperties]
public class ShopModel : PageModel
{
    public string Status { get; set; }
    public void OnGet(string gender)
    {
        switch (gender)
        {
            case "Mens":
                //get men page
                Status = gender;
                break;
            case "Womens":
                //get womens page
                break;
        }
    }
}

Shop.cshtml

@page
@model ECommerce.Pages.Shop.ShopModel
@{
    ViewData["Title"] = "Shop";
}
<p>
    @Model.Status
</p>

当我调试 gender 的值时显示为 null,因此永远不会设置状态。我会以错误的方式解决这个问题吗?非常感谢任何帮助,谢谢!

参数名是gender,不是id,所以应该是

<a asp-page="/Shop" asp-route-gender="Mens" class="nav-link">Mens</a>

详细了解 anchor tag helper's route value

如果您要使用除 OnGet 之外的其他方法,例如 OngetView,您必须将 版本