Добавление стандартного SelectListItem

 public IEnumerable<SelectListItem> GetList(int? ID)
 {
      return from s in db.List
             orderby s.Descript
             select new SelectListItem
             {
                 Text = s.Descript,
                 Value = s.ID.ToString(),
                 Selected = (s.ID == ID)
             };
 }

Я возвращаю вышеуказанное в представление и заполняю DropDownList. Я хотел бы добавить значение по умолчанию SelectListItem (0, "Please Select..") к вышеуказанному результату linq, прежде чем он будет возвращен в представление. Это возможно?

Ответы

Ответ 1

return new[] { new SelectListItem { Text = ... } }.Concat(
       from s in db.List
       orderby s.Descript
       select new SelectListItem
       {
           Text = s.Descript,
           Value = s.ID.ToString(),
           Selected = (s.ID == ID)
       });

Ответ 2

Как вы используете ASP.NET MVC, вы можете сделать это в представлении, указав значение параметра optionLabel метода DropDownField для HtmlHelper - например:

htmlHelper.DropDownList("customerId", selectList, "Select One");

Помещение этого типа кода в ваш уровень пользовательского интерфейса, вероятно, более уместно, чем его наличие в слое данных. Один недостаток этого заключается в том, что в вашем поле выбора будет пустое строковое значение, а не "0" для опции "Выбрать один", но это не проблема, так как вы можете рассматривать это как нулевое значение, если действие вашего контроллера метод может принимать значение NULL для соответствующего параметра - например,

public ActionResult DoSomething(int? customerId)
{
  if(customerId != null)
  {
    // do something with the value
  }
}

Ответ 3

var list = from s in db.List
           orderby s.Descript
           select new SelectListItem
           {
               Text = s.Descript,
               Value = s.ID.ToString(),
               Selected = (s.ID == ID)
           };

list.Insert(0, new SelectListItem { Text = "Please Select...", Value = string.Empty });
return list;

Ответ 4

Вот что я сделал, я прочитал свои значения из файла XML в IList. Затем я вставил новую запись в IList в положение 0. Затем сделайте список выбора из IList.

IList < MY_DATA > mydata = (из tmp в myXML.Descendants( "R" ). ToList()

                      select new MY_DATA
                      {
                         NR = tmp.Attribute("NR").Value,
                         NA = tmp.Attribute("NA").Value 
                      }).ToList<MY_DATA>();

mydata.Insert(0, новый My_DATA() {NR = ", NA =" --Click to Select-- "});

SelectList mylist = new SelectList (mydata," NR "," NA");

Ответ 5

firt введите значение по умолчанию в список

list.add(ваш элемент списка по умолчанию)

а затем выполните list.addrange(запрос выбора linq)

веселит

Ответ 6

После того, как я просмотрел много вопросов, и я не нашел то, что искал. Мне не нужно много строк кода, чтобы просто иметь простой drowpdown. поэтому я хочу поделиться с вами тем, что я использую, и это легко и просто.. (особенно если вы не хотите использовать и Entity Framework..

с помощью System.Web.Mvc;

SelectList(IEnumerable items, string dataValueField, string dataTextField);

Пример:

в Контроллер добавить:

SelectList slTitle = new SelectList(Query.SelectAllTitle(), "TitleID", "TitleName");
ViewBag.TitleSelectList = slTitle; 

в Просмотреть добавить:

@Html.DropDownList("TitleSelectList", "--please select--")

Ответ 7

Это просто для людей, которые используют фреймворк Webpages (а не MVC и веб-форму) с Razor V2 и С#, вам нужно сделать

    @Html.DropDownList("category", "Please select", listData)

Примечание. НеобязательныйLabel должен быть средним параметром.

Эквивалент будет добавлять SelectListitem к вашим данным списка:

    var list=db.Query("select id, name from dbtable");
    List<SelectListItem> listData = new List<SelectListItem>();
    listData.Add(new SelectListItem
    {
        Text = "Please select",
        Value = "",
    }); 

    foreach(var item in list)   {
        listData.Add(new SelectListItem  {
            Text = item.Name,
            Value = item.id,
            Selected = isSelected 
        });
    }

    @Html.DropDownList("play" , listData)