如何在 ASP.Net MVC 中的 ListBoxFor HTML Helper 上添加选项标签

How to add an Option label on ListBoxFor HTML Helper in ASP.Net MVC

如何为 ListBoxFor HTML 助手添加一个 option label,就像 DropDownListFor 上存在的那样?

我有类似于下面的代码:

<%= Html.ListBoxFor( m => m.SelectedElements, new MultiSelectList(Model.AllPossibleElements, "ID", "Text")) %>

下面的图像是输出:

我想要一个默认的 selection(选项标签),例如:“拜托,select 值”。

你可以做到@Html.LabelFor(x => x.ListBoxName, "Your Label");

其中 ListBoxName 是 ViewModel 中列表框的名称。

更新: 抱歉,我以为你想要一个 HTML 标签。您要查找的是占位符。

<%= Html.ListBoxFor( m => m.SelectedElements, new MultiSelectList(Model.AllPossibleElements, "ID", "Text"), new { @placeholder = "Your Label" }) %>

注意:这实际上并没有在 ListBox 中创建 'option'。因此,可能存在与旧版浏览器的兼容性问题。

Html.DropDownListFor() 有一个 "option" 参数的原因是下拉列表在没有选定值时是空白的,如果不展开它们就看不到它们的内容。

列表框通常会显示其内容,因此不需要选项。未选中的列表框不需要说什么"Select an option",因为选项清晰可见。

我认为您的问题是您正在使用第三方库将列表框重新设计为看起来像下拉列表,因此它的行为方式与您期望的下拉列表行为方式不同(因为它不是一个下拉列表,它是一个看起来像下拉列表的列表框)。

Listboxfor 助手不提供此功能,因为提供它通常没有意义。该选项所做的只是创建一个列表中第一个具有空值的条目。因此,当提交表单时,空值将触发您可能在支持 属性.

上进行的任何必需验证

因此,要自己执行此操作,您需要添加一个空项目,其中仅包含您想要的文本和一个空值。