【问题标题】:How to add an Option label on ListBoxFor HTML Helper in ASP.Net MVC如何在 ASP.Net MVC 中的 ListBoxFor HTML Helper 上添加选项标签
【发布时间】:2015-06-09 15:20:26
【问题描述】:

如何添加option label,就像DropDownListFor 上存在的ListBoxFor HTML Helper 一样?

我有类似下面的代码:

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

下面的图片是输出:

我想要一个默认选择(选项标签),例如:“请选择值”。

【问题讨论】:

  • 该图像如何显示列表框?您是否正在使用某种第三方库来重新设置列表框类型的样式,使其看起来像下拉菜单?

标签: asp.net-mvc asp.net-mvc-4 html-helper


【解决方案1】:

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

列表框通常会显示其内容,因此不需要选项。未选中的列表框不需要说“选择一个选项”,因为选项清晰可见。

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

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

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

【讨论】:

  • 使用 DropDownList 而不是 ListBoxFor,我选择了 ListBox 而不是 DropDownList,因为我听说它更适合多选元素。但由于它没有默认选择值作为参数,我回到 DropDownList 并将选定元素的集合传递给 MultiSelectList 对象。
【解决方案2】:

你可以@Html.LabelFor(x =&gt; x.ListBoxName, "Your Label");

ListBoxName 是 ViewModel 中 ListBox 的名称。

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

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

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

【讨论】:

  • 嗨@Jeevan,我尝试使用 m.SelectedElements, "Your Label") %> 并在下拉列表上方创建一个标签,而不是作为选定的元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多