0

我可以在选项标签中添加标签,并且它可以工作(不知道它是否是有效的 HTML4/5,但它至少在 Firefox 中有效):

<select>
  <option><i class="icon-plus"></i>Add item</option>
  <option><i class="icon-remove"></i>Remove item</option>
  <option><i class="icon-edit"></i>Edit item</option>
</select>

我在这些选项标签中放置了 Bootstrap/FontAwesome 网络字体图标。

但是我使用的是 MVC4/Razor,我无法获得正确的语法来使其正确呈现。它对所有这些内部标签进行编码,我得到&lt;,&gt;等。

这就是我正在做的事情:

// first I make a new list with the icons inside
var items = Model.Items.Select(q => new SelectListItem() {
  Selected = q.Selected,
  Text = "<i class=\"icon-add\"></i>" + q.Text,
  Value = q.Value
  });
// then render the dropdown
Html.DropDownListFor(m => m.SelectedItem, items, "All")

我如何让这个工作?

4

2 回答 2

0

你不能开箱即用。根据您需要使用它的频率 - 我个人建议通过循环手动进行。

如果需要,您可以为下拉列表编写扩展方法/帮助程序。

我在这里找到了一个类似的例子,虽然这个人用它来自定义'select'标签,你会想要自定义'options'标签:Fun (?) with Linq Expressions in extension methods

希望这可以帮助。

于 2013-02-17T21:24:42.323 回答
0

好的,我选择了一个简单的选项...

只需将 FontAwesome 类放在<option>标签上,而不是嵌套的子<i>标签上。这样标记是有效的。

当然,这需要在循环中手动完成。

于 2013-02-17T21:46:37.390 回答