2011-09-30 36 views
20

Hỏi: Cách đặt chiều rộng cho @ Html.DropDownList (và không phải trong css)?@ Html.DropDownList width

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

Trả lời

63

Đối số thứ hai của trợ giúp DropDownList phải là IEnumerable<SelectListItem>. Bạn đang đi qua một chuỗi (một cái trống để chính xác hơn). Vì vậy, để sử dụng helper này, bạn sẽ phải tôn trọng chữ ký của nó:

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

Rõ ràng tạo ra một danh sách thả xuống rỗng là ít sử dụng. Bạn có thể có một mô hình view (bạn nên bằng cách này) mà bạn muốn sử dụng để liên kết với:

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

và dĩ nhiên là bởi vì bạn có một mô hình xem bạn nên thích sử dụng DropDownListFor helper:

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

và cuối cùng để tránh làm lộn xộn HTML của bạn với phong cách bạn nên sử dụng một CSS bên ngoài:

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

nơi trong CSS bên ngoài của bạn, bạn sẽ xác định .mycombo quy tắc:

.mycombo { 
    width: 250px; 
} 

Bây giờ bạn có những gì tôi coi là mã thích hợp.

+0

$$$ .... thanks !!!!!! – JaJ

+0

Có thể thay thế Model.MyList bằng ViewBag bằng cách nào đó không? –

+2

@Peretz, có, nó có thể, nhưng không phải cái gì tôi muốn giới thiệu. Sử dụng mô hình xem là cách tiếp cận tốt hơn nhiều. –

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

Có kỹ thuật jquery cho phép bạn đặt chiều rộng mà không cần phải xử lý kiến ​​trúc @ Html.DropDownList.

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

Bạn nên sử dụng phương pháp Xem mô hình. Tuy nhiên, cách lười biếng là chỉ để cung cấp cho tham số thứ 2 là null.

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