Как передать параметр в RazorPage OnGet()?

Используя razor pages, я пытаюсь создать веб-сайт электронной коммерции для продажи одежды и хочу использовать одну страницу в качестве шаблона для загрузки как мужских, так и женских страниц. Чтобы проверить, это можно сделать на моей странице _Layout.cshtml, я использую <a asp-page="/Shop" asp-route-id="Mens" class="nav-link">Mens</a>, а затем в:

Магазин.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;
        }
    }
}

Магазин.cshtml

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

При отладке значение gender отображается как null, поэтому статус никогда не устанавливается. Я иду об этом неправильно? Любая помощь очень ценится, спасибо!


person steve    schedule 12.03.2019    source источник


Ответы (2)


Имя параметра gender, а не id, поэтому оно должно быть

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

См. дополнительные сведения о значение маршрута вспомогательного тега привязки.

person Luke Vo    schedule 12.03.2019

Если вы собираетесь использовать другой метод, отличный от OnGet, например, OngetView, вам нужно будет поставить Ver

person Jony    schedule 22.01.2021