Как получить переменный параметр asp-маршрута в ASP.NET MVC с C#?

#c# #asp.net-core

Вопрос:

Мне было интересно, знает ли кто-нибудь, как я мог бы получить выбранные значения из параметров выбора формы в свой бренд asp-маршрута и цену asp-маршрута.. видя, как значения могут отличаться в зависимости от того, что выбирает пользователь (я новичок в ASP.NET MVC, это для задания).

Вот мое мнение:

 <form name="formid">
    <a>Filter by brand</a>
    <select name="brandoption">
        @foreach (string brand in Model.Brands)
        {
            <option id="brand" value="@brand">@brand</option>               
        }
    </select>
</form>

<form>
    <a>Filter by price</a>
    <select name="priceoption">

        @for (int i = 25; i < 200; i  = 25)
        {
            <option value="@i">@i €</option>
        }
    </select>
</form>

<a id="btn" asp-controller="Boards"
   asp-action="FilterBoards" asp-route-brand=""  asp-route-price ="" class="btn btn-primary " >
  FIlter.
</a>
 

Комментарии:

1. Привет @дэви, ты уверен, что пользуешься asp.net вместо того, чтобы asp.net ядро? asp.net не поддерживает помощник по тегам.

2. я использую asp.net ядро(5)

3. Это не та проблема, которую вам нужно решать. Вам нужно отправить html-форму, вот для чего они нужны. например, заверните ваши <select буквы s в единую форму. Используйте asp-action / asp-page-handler для создания действия формы. Используется asp-for для создания имен выбора и привязки выбранных в данный момент значений. Превратите свою ссылку в <button type="submit" .

4. например, следуйте примеру, подобному этому; docs.microsoft.com/en-us/aspnet/core/mvc/views/…

5. Привет @дэви, Мой ответ помог вам решить вашу проблему? Если да, не могли бы вы, пожалуйста, принять в качестве ответа? Если нет, не могли бы вы, пожалуйста, продолжить, чтобы сообщить мне об этом? См. раздел: Как принять в качестве ответа . Спасибо.

Ответ №1:

asp-route-brand и asp-route-price будет генерировать строку запроса к URL-адресу при запуске приложения. Таким образом, вы не можете установить значение для этих помощников тегов в соответствии с выбором формы.

Я думаю, что удобный способ заключается в том, что вы можете использовать форму отправки для выполнения своих требований:

 <form name="formid" asp-controller="Boards" 
               asp-action="FilterBoards">   @*add tag helper here*@
    <a>Filter by brand</a>
    <select name="brand">   @*change the name*@
        @foreach (string brand in Model.Brands)
        {
            <option id="brand" value="@brand">@brand</option>
        }
    </select>
    <a>Filter by price</a>
    <select name="price">   @*change the name*@

        @for (int i = 25; i < 200; i  = 25)
        {
            <option value="@i">@i €</option>
        }
    </select>
    <input type="submit" value="Filter"/>
</form>
 

Внутренний код:

 public void FilterBoards(string brand, string price)//the name attribute in frontend 
                                                   //matches the parameter name in backend
{
    //....
}