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。在返回到视图之前,我想向上面的linq结果添加一个默认的SelectListItem (0, "Please Select..")。这个是可能的吗?
发布于 2009-05-21 17:37:44
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)
});发布于 2009-05-21 17:45:24
当您使用ASP.NET MVC时,您可以在视图中通过为HtmlHelper的DropDownField方法的optionLabel参数指定值来完成此操作-例如:
htmlHelper.DropDownList("customerId", selectList, "Select One");将这种类型的代码放在UI层中可能比将它放在数据层中更合适。这样做的一个缺点是您的选择框将有一个空字符串值,而不是'Select One‘选项的"0“,但这并不是真正的问题,因为如果您的控制器操作方法可以接受相关参数的可空int,则可以将其视为null值-例如
public ActionResult DoSomething(int? customerId)
{
if(customerId != null)
{
// do something with the value
}
}发布于 2009-05-21 17:35:17
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;https://stackoverflow.com/questions/894130
复制相似问题