首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展@Html.DropDownListFor

扩展@Html.DropDownListFor
EN

Stack Overflow用户
提问于 2013-05-03 01:22:14
回答 1查看 302关注 0票数 1

我想通过扩展@Html.DropDownListFor帮助器来使用以下代码。我的控制器获得了一个列表,并且我正在向视图模型中的IEnumerable添加一个默认值。但是,我不想在每次想要一个具有默认值的dropdown时都编写所有这些代码。因此,扩展helper似乎是合乎逻辑的。

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-03 01:25:29

Html.DropDownListFor已经支持将默认值添加到选项中,因此无需重新发明轮子:

使用此重载:

http://msdn.microsoft.com/en-us/library/ee703567(v=vs.108).aspx

代码语言:javascript
复制
@Html.DropDownListFor(
    m => m.Property,
    GetSelectList(),
    "defaultOption", // the text for the default option goes here
    null
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16344063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档