Добавление по умолчанию SelectListItem - PullRequest
16 голосов
/ 21 мая 2009
 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, прежде чем он будет возвращен в представление. Это возможно?

Ответы [ 7 ]

31 голосов
/ 21 мая 2009
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)
       });
21 голосов
/ 21 мая 2009

Поскольку вы используете 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
  }
}
4 голосов
/ 21 мая 2009
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;
0 голосов
/ 28 июля 2016

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

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

Примечание: OptionalLabel должен быть средним параметром.

Эквивалентом будет добавление 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)
0 голосов
/ 06 марта 2012

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

с использованием System.Web.Mvc;

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

Например:

in Контроллер add:

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

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

@Html.DropDownList("TitleSelectList", "--please select--")
0 голосов
/ 22 мая 2009

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

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

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

ура

0 голосов
/ 22 мая 2009

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

IList 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 = "- Нажмите, чтобы выбрать--"});

SelectList mylist = новый SelectList (mydata, "NR", "NA");

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