Раскрывающийся список SelectList, показывающий множественный = "несколько" для текущей модели представления - PullRequest
0 голосов
/ 30 марта 2019

Это странная проблема, и я не могу найти решение, как хочу.Я использую .net core 2.1.У меня есть модель представления заказов следующим образом:

public class OrdersFilterViewModel
{
    [Display(Name = "Account Numbers:")]
    public IEnumerable<SelectListItem> AccountNumbers { get; set; }
}

Моя модель представления и SelectList в моем контроллере заказов называются так:

var vm = new OrdersFilterViewModel
{
    AccountNumbers = new SelectList(_context.Account.Where(m => m.UserID == userId), "AccountNumber", "AccountNumber", account)
};

return PartialView("_FilterOrders", vm);

Проблема заключается в попытке получитьвыпадающий список в виде, который выглядит следующим образом:

<form asp-action="FilterOrders" asp-controller="Order" id="ordersFilterForm" method="post">
    <div class="form-group">
       <label asp-for="AccountNumbers" class="control-label"></label>
       <select asp-for="AccountNumbers" class="form-control" asp-items="@Model.AccountNumbers">
        </select>
    </div>
    <div class="form-group">
        <input type="submit" value="Submit" class="btn btn-default" />
    </div>
</form>

Это несколько работает, но дает мне отображение типа textarea, где multiple = "multiple" всегда отображается в браузере.Я обнаружил, что если я добавлю что-то вроде следующего в мою модель представления:

public int? AccountId { get; set; }

Затем измените мое представление на:

<select asp-for="AccountId" class="form-control" asp-items="@Model.AccountNumbers">

Тогда я получу свой раскрывающийся список.Однако, я не нуждаюсь в этом свойстве ни для чего, насколько я знаю.Я перепробовал миллион вещей, так что, возможно, я сделал некоторые другие небольшие изменения, которые я забыл, чтобы заставить это работать, но в этом суть.

Есть ли способ добавить это дополнительное свойство?Или мне это нужно для чего-то, о чем я не знаю?Или есть какой-либо способ установить multiple = "false" или что-то в этом роде, чтобы я мог получить свой выпадающий список с моей исходной моделью представления и т. Д.

Я еще не имел дело с post назад к контроллеру, так что, возможно, это покажет ошибки.Я в основном пытаюсь создать фильтр запросов модального типа, который на самом деле мало что делает, кроме изменения некоторых параметров и отправки их обратно в мой запрос для его обновления.Спасибо.

1 Ответ

0 голосов
/ 31 марта 2019

Есть ли способ добавить это дополнительное свойство? Или мне это нужно что-то, о чем я не знаю?

Да, вам нужно это дополнительное свойство, потому что в вашем выборе есть много элементов, и пользователь выберет один или несколько элементов, а на стороне сервера вам нужно будет знать, что выбрал пользователь, это цель выбранного тега.

И multiple = "multiple" зависит от того, что вы положили в asp-for, в случае asp-for="AccountId" это одно значение типа int, поэтому оно не будет использовать несколько, если у вас есть массив в asp-for тогда он будет использовать кратное число.

Вот довольно подробное описание помощника по тегу select: Выбор помощника по тегам в ASP.NET Core MVC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...