@ Html.DropDownList宽度

gen*_*eek 25 razor asp.net-mvc-3

问:如何设置@ Html.DropDownList的宽度(而不是在css中)?

@Html.DropDownList("ListId", String.Empty, new {style="width: 250px;"})  @* no go!*@
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 70

DropDownList帮助器的第二个参数必须是IEnumerable<SelectListItem>.您正在传递一个字符串(一个空字符串更精确).所以为了使用这个助手你必须尊重它的签名:

@Html.DropDownList(
    "ListId", 
    Enumerable.Empty<SelectListItem>(), 
    new { style = "width: 250px;" }
)
Run Code Online (Sandbox Code Playgroud)

显然,生成一个空的下拉列表几乎没用.你可能有一个你想要用来绑定的视图模型(顺便提一下):

@Html.DropDownList(
    "ListId", 
    Model.MyList, 
    new { style = "width: 250px;" }
)
Run Code Online (Sandbox Code Playgroud)

当然,因为你有一个视图模型,你应该更喜欢使用DropDownListFor帮助器:

@Html.DropDownListFor(
    x => x.ListId, 
    Model.MyList, 
    new { style = "width: 250px;" }
)
Run Code Online (Sandbox Code Playgroud)

最后为了避免使用外部CSS混淆HTML样式:

@Html.DropDownListFor(
    x => x.ListId, 
    Model.MyList, 
    new { @class = "mycombo" }
)
Run Code Online (Sandbox Code Playgroud)

在外部CSS中,您将定义.mycombo规则:

.mycombo {
    width: 250px;
}
Run Code Online (Sandbox Code Playgroud)

现在你有我认为合适的代码.

  • @Peretz,是的,这是可能的,但不是我推荐的.使用视图模型是一种更好的方法. (2认同)

小智 6

您应该使用视图模型方法。然而,懒惰的出路只是给第二个参数一个空值。

@Html.DropDownList("ListId", null, new {style="width: 250px;"})
Run Code Online (Sandbox Code Playgroud)