2016-05-25 2 views
1

У меня есть List<SelectListItem> переменная с двумя значениями. Я хочу представить его как раскрывающийся список в html, чтобы я делал это.Удалить несколько вариантов из основного приложения asp.net

<div class="form-group row"> 
    <label asp-for="Roles" class="col-sm-2 col-sm-offset-2 form-control-label"></label> 
    <div class="col-md-6"> 
     <select asp-for="Roles" asp-items="@Model.Roles" class="form-control selectpicker bs-select-hidden"></select> 
    </div>   
</div> 

и этот код показывает мне список с этими двумя элементами, но и генерирует

multiple="multiple" 

атрибут для выбора тега.

Как я могу заставить не генерировать несколько атрибутов?

+0

что бы вы указываете 'жерех-for' по-видимому, может содержать * мю ltiple * значения. Итак, если в нем в настоящее время содержится, скажем, два элемента (а ваши 'asp-items' имеют более двух элементов в нем), как это означает знать, какой * один * элемент должен быть отмечен как' selected'? Что происходит с другим элементом при отправке вашей формы? –

ответ

0

Set multiple=false в селектов

+0

не работает так –

+0

'asp-for =" Роли "', где фигуры роятся? это массив или список –

+0

Свойства ролей, которые вы указали в asp-for = "Роли", являются списком. если вы передаете список или массив этим атрибутам, тогда бритва автоматически установит 'muliple = 'multiple'', чтобы установить muliple в false, пожалуйста, передайте свойство string из вашей модели в asp-для атрибутов Из дополнительной информации, пожалуйста, проверьте эту ссылку https: // github .com/САШ/бритва/вопросы/586 –

0

Вы можете удалить этот атрибут multiple с JavaScript:

Модель:

public int RoleId { get; set; } 

public SelectList Roles { get; set; } 

Добавить вспомогательный класс CSS, например, : single-select

<select asp-for="RoleId" asp-items="@Model.Roles" class="single-select"> 
</select> 

Javascript:

$(function(){ 
    $(".single-select").removeAttr("multiple"); 
}); 

Примечание: Если вы отправите форму, вы можете проверить свойство RoleId. Свойство, называемое Roles, возможно, только для отображения всех элементов.

1

Функция Select Tag Helper автоматически делает элемент выбора несколько, если свойство asp-for является IEnumerable. Способ избежать этого - использовать базовый класс (а не коллекцию) как свойство asp-for. Свойство asp-items должно по-прежнему являться коллекцией, так как это элементы, которые станут параметрами в списке выбора.

В вашем примере это просто изменив Asp-за = «Роли» в АСП-за = «Роль»

<div class="form-group row"> 
<label asp-for="Roles" class="col-sm-2 col-sm-offset-2 form-control-label"></label> 
<div class="col-md-6"> 
    <select asp-for="Role" asp-items="@Model.Roles" class="form-control selectpicker bs-select-hidden"></select> 
</div>   

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

ASP NET Core Select Tag Helper Reference

 Смежные вопросы

  • Нет связанных вопросов^_^