2013-04-30 49 views
9

Trong MVC3 Tôi có mã này tại bộ điều khiển của mình. Nó truy xuất Danh sách ID \ Tên từ bảng Cài đặt và tạo một ViewBagĐặt giá trị được chọn mặc định trong DropDownList trong MVC3

var vs = dba.Installation.OrderBy(q => q.InstName).ToList(); 
ViewBag.Vessels = new SelectList(vs, "InstId", "InstName"); 

Bây giờ, theo quan điểm của tôi. Tôi muốn hiển thị danh sách trong danh sách thả xuống. Tôi đã sử dụng trình trợ giúp Html hoạt động tốt ...

@Html.DropDownList("InstId",(SelectList)ViewBag.Vessels, "- Select one -") 

Tôi cần đặt mục đầu tiên trong Danh sách ViewBag làm giá trị được chọn mặc định, thay vì "- Chọn một -" văn bản.

Tôi có thể làm như thế nào?

Cảm ơn trước!

Trả lời

19

Có quá tải cho hàm tạo SelectList có 4 đối số. Điều cuối cùng trong số đó là đối tượng được chọn mặc định. Ví dụ:

ViewBag.Vessels = new SelectList(vs, "InstId", "InstName", selectedValue); 

Trường hợp selectedValue là đối tượng thuộc bất kỳ loại nào trong danh sách của bạn.

+0

Cảm ơn @WheretheresaWill. CHÚA ƠI! Tôi đã không nhận ra rằng tình trạng quá tải. Tôi ngu ngốc. – equisde

+0

Không phải lo lắng gì cả! – WheretheresaWill

+0

cảm ơn, nó đã giúp tôi .... – shanish

0

Bạn cũng có thể tạo một lớp Helper cho DropDownList Nó sẽ có một phương pháp để thiết lập các văn bản như bằng văn bản mặc định cho mỗi DropDownList trong bạn giải pháp

+0

Cảm ơn @ K2_Ketu nhưng như WheretheresaWill cho biết, có một tình trạng quá tải bao gồm tùy chọn này. – equisde

4

tôi cần phải đặt mục đầu tiên trong danh sách ViewBag như giá trị được chọn mặc định là , thay vì "- Chọn một -" văn bản.

Sau đó, bạn cần phải chọn mục đầu tiên trong danh sách của bạn (vs) và làm cho nó là id và sử dụng nó như là selecedValue trong SelectList:

ViewBag.Vessels = new SelectList(vs, "InstId", "InstName", 
    vs.FirstOrDefault().InstId); 
+0

Cảm ơn! Nó hoạt động tốt như – equisde

+0

Bạn được chào đón. –