Asp.net mvc mvc:如何将初始项添加到键为0且说明为';显示所有';

Asp.net mvc mvc:如何将初始项添加到键为0且说明为';显示所有';,asp.net-mvc,Asp.net Mvc,以下是我的FormViewModel的摘录: public SummaryFormViewModel(IEnumerable<Site> sites, IEnumerable<Landowner> landowners) { var sitesValues = sites .OrderBy(s => s.SiteDescription) .Select(s => new KeyV

以下是我的FormViewModel的摘录:

    public SummaryFormViewModel(IEnumerable<Site> sites, IEnumerable<Landowner> landowners)
    {

        var sitesValues = sites
            .OrderBy(s => s.SiteDescription)
            .Select(s => new KeyValuePair<int, string>(s.SiteId, s.SiteDescription));
        this.Sites = new SelectList(sitesValues, "Key", "Value");
public SummaryFormViewModel(IEnumerable站点、IEnumerable土地所有者)
{
var sitesValues=站点
.OrderBy(s=>s.SiteDescription)
.Select(s=>newkeyvaluepair(s.SiteId,s.SiteDescription));
this.Sites=新的选择列表(sitesvalue,“Key”,“Value”);
我想插入(作为第一项)一个将自动成为默认值的值。该值的键为0,描述为“全部显示”

基本上,我向用户提供组合框,允许他们过滤结果

我需要一种简洁的方式将这一初始行添加到SelectList

有人能给我提个建议吗?提前谢谢

J

您可以使用.ToList()然后使用.Insert()添加新值

例如:

    var sitesValues = sites
        .OrderBy(s => s.SiteDescription)
        .Select(s => new KeyValuePair<int, string>(s.SiteId, s.SiteDescription))
        .ToList();
    sitesValues.Insert(0, new KeyValuePair<int, string>(0, "Show All"));

    this.Sites = new SelectList(sitesValues, "Key", "Value");
var sitesValues=站点
.OrderBy(s=>s.SiteDescription)
.Select(s=>newkeyValuePair(s.SiteId,s.SiteDescription))
.ToList();
插入(0,新的键值对(0,“全部显示”);
this.Sites=新的选择列表(sitesvalue,“Key”,“Value”);

HTML的重载之一。下拉方法接受第一项的标签。类似于:

Html.Dropdown("MyDropdown", Model.Sites, "Show All")

如果默认为value=“”,请参见那么这可能是最理想的。使用
int?
并检查
.HasValue
。如果它有效,则效率更高、更清晰。是的,它的值是空的。当然,感谢您的帮助,有人知道如何将问题标记为已回答吗?在页面上看不到任何选项。@John:单击相关答案旁边的勾选框,我就知道了t将变为绿色,问题将标记为已回答。