#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
{
//....
}