Как установить значение по умолчанию 0 для текста Select в DropDownList в MVC?

Ниже находится раскрывающийся список страны. Я хочу выделенный текст «Выбрать», который работает.

@Html.DropDownList("ddlCountryName", 
 new SelectList(ViewBag.CountryName, "CountryId", "CountryName"), 
 new { @class = "form-control" })

Теперь я хочу установить значение «0» для текста «Выбрать», который выбран по умолчанию. В настоящее время значение для «Выбрать» пустое, как показано ниже.

введите здесь описание изображения

Как я могу это сделать? Значение "Выбрать" отсутствует в источнике данных. Мне нужно получить доступ к этому выбранному значению в JQuery.

Я пробовал с этими двумя, но ни один из них не работает.

@Html.DropDownList("ddlCountryName", 
new SelectList(ViewBag.CountryName, "CountryId", "CountryName"),
"Select", new { @class = "form-control", @selected = "0" })

И

@Html.DropDownList("ddlCountryName", 
new SelectList(ViewBag.CountryName, "CountryId", "CountryName"),
"Select", new { @class = "form-control", @selected = "0" })

Ниже приведен код контроллера для значений CountryName.

ViewBag.CountryName = dbLMS.CountryMasters.Select(c => new { c.CountryId, c.CountryName }).OrderBy(c => c.CountryName).ToList();

person Suraj Kumar    schedule 12.02.2019    source источник
comment
SelectList имеет параметр object selectedValue. Это то, о чем ты говоришь? Я не вижу прикрепленного изображения.   -  person SᴇM    schedule 12.02.2019
comment
Вы пытались удалить @selected = "0"?   -  person er-sho    schedule 12.02.2019
comment
@er-sho Я пробовал, но это не работает, так как ни Select, ни 0 не являются частью источника данных.   -  person Suraj Kumar    schedule 12.02.2019
comment
@SurajKumar, покажи мне, как ты связываешь имена своих стран с методом контроллера   -  person er-sho    schedule 12.02.2019
comment
@er-sho Я добавил к вопросу код контроллера.   -  person Suraj Kumar    schedule 12.02.2019
comment
@SurajKumar Пожалуйста, проверьте мой ответ. Наверняка это сработает для вас. Я делаю это в своем случае.   -  person TanvirArjel    schedule 12.02.2019
comment
@SurajKumar, я добавил свой ответ ниже, попробуйте и дайте мне знать :)   -  person er-sho    schedule 12.02.2019


Ответы (3)


Вы можете сделать следующее:

Вариант 1:

@{
  var countrySelectList =  new SelectList(ViewBag.CountryName, "CountryId", "CountryName");

  List<SelectListItem> countrySelectListItems  = countrySelectList.ToList();
  countrySelectListItems.Insert(0, (new SelectListItem { Text = "Please select", Value = "0", Selected = true }));
}

@Html.DropDownList("ddlCountryName", countrySelectListItems , new { @class = "form-control" })

Вариант 2:

В методе контроллера:

List<SelectListItem> selectListItems = dbLMS.CountryMasters.Select(a => new SelectListItem()
{
    Text = a.CountryName,
    Value = a.CountryId
}).ToList();

selectListItems.Insert(0, new SelectListItem(){Text = "Selet Country", Value = "0", Selected = true});
ViewBag.CountrySelectList = selectListItems;

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

@Html.DropDownList("ddlCountryName", (List<SelectListItem>)ViewBag.CountrySelectList, new { @class = "form-control" })
person TanvirArjel    schedule 12.02.2019
comment
@SurajKumar О! Я пропустил " после названия страны. Вы тоже должны были это заметить. Пожалуйста, используйте обновленный код. Наверняка теперь сработает. - person TanvirArjel; 12.02.2019
comment
Selected = true должно быть, Selected = true. Вам не хватает запятой. - person Suraj Kumar; 12.02.2019
comment
Да! Спасибо за уведомление. сейчас точно сработает. - person TanvirArjel; 12.02.2019
comment
@SurajKumar Это сработало для вас или у вас возникли дополнительные проблемы? - person TanvirArjel; 12.02.2019
comment
Он работает нормально, и я приму его через некоторое время, если не получу более короткое решение от вашего. - person Suraj Kumar; 12.02.2019
comment
Короче значит? Из метода контроллера? - person TanvirArjel; 12.02.2019
comment
Короче означает здесь просто меньшее количество строк, но я уже сказал, что ваш ответ также идеален. - person Suraj Kumar; 12.02.2019
comment
В порядке! Подождите, пока не проблема :) - person TanvirArjel; 12.02.2019
comment
@SurajKumar Пожалуйста, проверьте мой обновленный ответ. Я добавил еще один вариант для вас. - person TanvirArjel; 12.02.2019

Вам действительно не нужно значение для Select. Для модели сохраните атрибут обязательной проверки.

Это обеспечит выбор значения. Таким образом, вам не нужно проверять бэкэнд.

person Gauravsa    schedule 12.02.2019

person    schedule
comment
@SurajKumar Вы пробовали это с 0, где я поставил //Default Value? - person JamesS; 12.02.2019
comment
Я должен установить 0 для выбора не выбранного значения. А 0 — это значение Select. - person Suraj Kumar; 12.02.2019