Asp.net mvc asp.net mvc如何为html.dropdownlist添加占位符

Asp.net mvc asp.net mvc如何为html.dropdownlist添加占位符,asp.net-mvc,drop-down-menu,placeholder,Asp.net Mvc,Drop Down Menu,Placeholder,我正在使用asp.NETMVC3 我有这个国家的下拉列表,我想为它添加一个占位符。这是我的密码: @Html.DropDownList("country", new SelectList(ViewBag.countries as System.Collections.IEnumerable, "name", "name"), new { @class="chzn-select", @placeholder="-select-", @style="width:160p

我正在使用asp.NETMVC3

我有这个国家的下拉列表,我想为它添加一个占位符。这是我的密码:

@Html.DropDownList("country",
     new SelectList(ViewBag.countries as System.Collections.IEnumerable,
     "name", "name"), new { @class="chzn-select", @placeholder="-select-",
     @style="width:160px;" } )
但是占位符不起作用,而样式起作用

如何为此设置占位符


另外,我只想在您的收藏视图包中使用
@Html.DropDownList
,而不是
@Html.DropDownListFor

。国家只需在收藏的起始处插入一个名为“-select-”的虚拟记录。您应该能够使用如下替代构造函数强制选定项:

@Html.DropDownList("country",
     new SelectList(ViewBag.countries as System.Collections.IEnumerable,
     "name", "name", "-select-"), new { @class="chzn-select", @style="width:160px;" } )
试试这个

@Html.DropDownListFor(m => m.SelectedProductIDs, Model.AvaliableProducts.ToSelectList("ID","Name"), new { @class = "chzn-select", data-placeholder="Please select a product" })

@Html.DropDownListFor(model=>model.SelectedItemID,新建SelectList(model.employeeList,“Value”,“Text”),新建字典{{{“数据占位符”,“选择沙盒…”,{“类”,“chzn选择”},{“样式”,“宽度:200px;”})

请查看更多详细信息:

我可以看出没有一个简单的答案。 我已经开发了一个简单的解决方案,但它提供了一些工作。这将适用于DropDownListDropDownListFor

首先,根据需要创建一个扩展类。(使用静态方法时必须是静态的) 然后添加以下扩展方法

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper,string name, IEnumerable<SelectListItem> selectList, string optionLabel, bool disableLabel)
{
    MvcHtmlString mvc = htmlHelper.DropDownList(name, selectList, optionLabel);
    if (disableLabel)
    {
        string disabledOption = mvc.ToHtmlString();
        int index = disabledOption.IndexOf(optionLabel);
        disabledOption = disabledOption.Insert(index - 1, " disabled");

        return new MvcHtmlString(disabledOption);
    }
    else
    {
        return mvc;
    }
}
你可以试试这个:

@Html.DropDownList("country", new SelectList(ViewBag.countries), "-select- ", new { @class="chzn-select", @style="width:160px;" })
最佳方式

@Html.DropDownListFor(m => m.SelectedProductIDs,
                      Model.AvaliableProducts.ToSelectList("ID","Name"),
                      "Please select a product",
                      new { @class = "chzn-select"})
一个涉及jQuery的快速且(并非如此)肮脏的解决方案

不要在列表的开头添加虚拟项,而是在前面添加一个已禁用的新选项。主要优点是,您不必处理列表中的虚拟项,最重要的是,您将无法在页面中选择该虚拟项

@Html.DropDownList("yourName", yourSelectList, new { @class = "form-control select-add-placeholder" })
之后的某个地方:

$(".select-add-placeholder").prepend("<option value='' disabled selected>Select an option...</option>");
$(“.select add placeholder”).prepend(“选择选项…”);
这看起来像:


如果您愿意,可以尝试以下方法:

@Html.DropDownList("country",null,"-SELECT-",new { @class="chzn-select",@style="width:160px;" })
试试这个:

@Html.DropDownList("MetadataId", (MultiSelectList)ViewData["category"], "All Categories",
    new { @class = "chk_dropdown d-none", @id = "categories", multiple = "multiple" })

这是我的方法,它终于起作用了@Html.DropDownList(“country”,new SelectList(ViewBag.countries as System.Collections.IEnumerable,“name”,“name”),“-SELECT-”,new{@class=“chzn-SELECT”,@placeholder=“-SELECT-”,@style=“width:160px;”我认为@占位符是无用的,尽管@样式显然有效。我想知道@placeholder是否是正确的关键字。我试图搜索@@html.DropDownList的文档或规范,但失败了。你知道我在哪里可以找到这些吗?你是对的,占位符属性在我给出的示例中是无用的,因为SelectList构造函数正在被传递所选值,这将导致它默认为selected。因为我已经有另一个模型传递到此页,所以我不想使用DropDownListFor,由于链接的完整性可能会在以后的日期过期,因此不鼓励仅使用dropdownlestreferring到链接。请在您的文章中解释该代码是如何工作的,以及为什么要使其自包含,并且仅将该链接用作参考。虽然此代码片段可能会解决此问题,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。问题是,您可以选择选项标签。
@Html.DropDownList("yourName", yourSelectList, new { @class = "form-control select-add-placeholder" })
$(".select-add-placeholder").prepend("<option value='' disabled selected>Select an option...</option>");
@Html.DropDownList("country",null,"-SELECT-",new { @class="chzn-select",@style="width:160px;" })
@Html.DropDownList("MetadataId", (MultiSelectList)ViewData["category"], "All Categories",
    new { @class = "chk_dropdown d-none", @id = "categories", multiple = "multiple" })