2011-09-30 62 views
20

问:如何为@ Html.DropDownList宽度(而不是CSS)?@ Html.DropDownList宽度

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

回答

63

DropDownList辅助的第二个参数必须是IEnumerable<SelectListItem>。你传递一个字符串(一个更精确的空字符串)。因此,为了使用这个帮助你必须尊重它的签名:

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

显然产生一个空的下拉列表是没有多大用处的。你可能有一个视图模型,你要使用绑定到(你应该的方式):

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

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

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

,最后以避免与风格弄乱你的HTML,你应该使用一个外部CSS:

@Html.DropDownListFor(
    x => x.ListId, 
    Model.MyList, 
    new { @class = "mycombo" } 
) 

凡在你的外部CSS,你会定义.mycombo规则:

.mycombo { 
    width: 250px; 
} 

现在你有我认为正确的代码。

+0

$$$ ....谢谢!!!!!! – JaJ

+0

是否有可能与ViewBag取代Model.MyList不知何故? –

+2

@Peretz,是的,这是可能的,但不是我会建议。使用视图模型是一种更好的方法。 –

1
@Html.DropDownListFor(model => model.Test, 
new SelectList(new List<YourNamespace.Modelname>(), "Id", "Name"), 
null, new { @id = "ddlTest", @style="width: 250px;" }) 
1

有一个jQuery技术,可以让你设置宽度而不必处理@ Html.DropDownList构造函数。

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
     $("#ListId").width(300); 
    }); 
</script> 
4

您应该使用视图模型方法。然而懒惰的出路只是为了让第二个参数为空。

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