Вставьте начальную пустую строку в список выбора MVC LINQ SQL - PullRequest
20 голосов
/ 23 июня 2011

У меня есть следующий код, который находится в моей форме FormViewModel для передачи моему представлению.

        var ownerValues = aspnet_Users
            .OrderBy(u => u.Surname)
            .Select(u => new KeyValuePair<int, string>(u.UserId, u.Surname + " " + u.Forename.ToString() + " [" + u.UserName.ToString() + "]"));
        this.OwnersList = new SelectList(ownerValues, "Key", "Value", incidentAction.OwnerId);

Когда я запускаю представление в проводнике, мой раскрывающийся список по умолчанию принимает первый элемент, и я хочу, чтобы он был установлен по умолчаниюв пустую строку.

Поэтому я планирую вставить начальную строку с userId = null, а затем пустую строку вместо «пожалуйста, выберите» или что-то подобное.

Может кто-нибудь, пожалуйста, посоветуйте мнео том, как сделать это в одной строке кода, я думаю, не уверен, с чего начать.

спасибо

Ответы [ 3 ]

32 голосов
/ 23 июня 2011

При рендеринге SelectList вы можете сделать что-то вроде

<%:Html.DropDownListFor(x => x.ApprovalType, Model.ApprovalTypes,"")%>

если вы хотите строго типизированный список или вы можете попробовать

<%:Html.DropDownList("ApprovalType", Model.ApprovalTypes, "") %>

в обоих примерах Model.ApprovalTypes содержит список выбора или список элементов выбора. Пустой строковый параметр в конце является необязательной меткой, а его значение также является пустой строкой
Редактировать Вставка метки (пустой строки или чего-то еще) с некоторым значением также создаст проблемы при попытке проверить его с помощью аннотаций данных. Выбор пустой метки не приведет к появлению сообщения об ошибке, поскольку ассоциированное значение будет равно -1 (не пусто), как предлагается в другом ответе.

8 голосов
/ 23 июня 2011

userid не может быть нулевым (поскольку оно int), но если -1 работает, вы можете попробовать

 this.OwnersList = new SelectList(new[]{new KeyValuePair<int, string>(-1, "please select")}.Union(ownerValues), "Key", "Value", incidentAction.OwnerId);
4 голосов
/ 15 июля 2014

Создайте свой собственный список , а затем выполните вставку

<code>
<code>List<SelectListItem> MyOwnerList = new List<SelectListItem>();
MyOwnerList.AddRange(new SelectList(ownerValues, "Key", "Value", incidentAction.OwnerId);
MyOwnerList.Insert(0, new SelectListItem{Text = "", Value = ""});
this.OwnersList =MyOwnerList;</code></p>

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