将类和默认值添加到未链接到模型的MVC下拉列表

时间:2014-12-29 12:32:17

标签: asp.net-mvc

我非常确定我应该在这里使用ViewModel,但由于我的功能已经存在,这似乎有点浪费,但是这里有一个问题。

我有一个下拉列表,在回发时,将所选值发送到我的控制器,然后我用它来过滤搜索结果。这一切都运行正常,但我需要一个默认值,但我也希望它使用bootstrap进行样式设置,所以我需要添加" form-control"上课。

所以这就是我所拥有的:

@Html.DropDownList("filterApp", "-- Select One --", new { @class = "form-control" })

最后的HtmlAttributes似乎没有效果,但如果我使用@ Html.DropDownListFor()代替它,它会起作用。由于这根本没有与我的模型相关联,所以我无法使用DropDownListFor()。

任何人都建议我如何避免创建ViewModel来解决这个问题?

谢谢!

更新:这解决了我的问题,谢谢你的帮助!

@Html.DropDownList("filterApp", null, "-- Select One --", new { @class = "form-control" })

2 个答案:

答案 0 :(得分:0)

您对DropDownList使用了错误的重载。你应该使用这个:

public static MvcHtmlString DropDownList(
 this HtmlHelper htmlHelper,
 string name,
 IEnumerable<SelectListItem> selectList,
 string optionLabel,
 IDictionary<string, Object> htmlAttributes
)

在这里你可以找到每一个重载:

SelectExtensions.DropDownList Method

答案 1 :(得分:0)

您可以从列表中选择DropDownList方法的正确重载,并使用符合您要求的方法。例如:

@Html.DropDownList("filterApp", SelectListItems, "-- Select One --",
    new { @class = "form-control" })

如果您不希望自己的选择与任何属性相关联,则根本不必使用扩展方法,HTML select将适用于您:

<select name="filterApp" class="form-control">
    <option value="">-- Select One --</option>
    <!-- other options -->
</select>