Добавление стандартного 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)