Подтвердить что ты не робот

Вставить начальную пустую строку в список выбора MVC LINQ SQL

У меня есть следующий код, который находится в моем 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, а затем пустую строку вместо "выберите" или что-то подобное.

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

спасибо

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

 this.OwnersList = new SelectList(new[]{new KeyValuePair<int, string>(-1, "please select")}.Union(ownerValues), "Key", "Value", incidentAction.OwnerId);

Ответ 3

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


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;

код >