我想通过扩展@Html.DropDownListFor帮助器来使用以下代码。我的控制器获得了一个列表,并且我正在向视图模型中的IEnumerable添加一个默认值。但是,我不想在每次想要一个具有默认值的dropdown时都编写所有这些代码。因此,扩展helper似乎是合乎逻辑的。
public class SiteGetSitesViewModel
{
public string SelectedSiteId { get; set; }
public IEnumerable<SelectListItem> SiteListItems { get; set; }
}
public ActionResult GetSites()
{
List<SiteDto> sites = _siteService.GetSites();
const string defaultText = "Select a site";
const string defaultValue = "-1";
var siteGetSitesViewModel = new SiteGetSitesViewModel
{
SiteListItems = Enumerable.Repeat(new SelectListItem
{
Selected = true,
Text = defaultText,
Value = defaultValue
}, 1).Concat(sites.Select(s => new SelectListItem
{
Text = s.SiteName,
Value = s.SiteId.ToString()
}))
};
return PartialView("_GetSites", siteGetSitesViewModel);
}发布于 2013-05-03 01:25:29
Html.DropDownListFor已经支持将默认值添加到选项中,因此无需重新发明轮子:
使用此重载:
http://msdn.microsoft.com/en-us/library/ee703567(v=vs.108).aspx
@Html.DropDownListFor(
m => m.Property,
GetSelectList(),
"defaultOption", // the text for the default option goes here
null
)https://stackoverflow.com/questions/16344063
复制相似问题