2012-08-24 60 views
8

Vì vậy, tôi có như sau (pseudo code):mvc C# html.dropdownlist và viewbag

string selectedvalud = "C"; 
List<SelectListItem> list= new List<SelectListItem>(); 
foreach(var item in mymodelinstance.Codes){ 
    list.Add(new SelectListItem { Text = item.Name, Value = item.Id.Tostring(), Selected = item.Id.ToString() == selectedvalue ? true : false }); 
} 

ViewBag.ListOfCodes = list; 

trên quan điểm của tôi:

<%: Html.DropDownList("Codes", (List<SelectListItem>)ViewBag.ListOfCodes , new { style = "max-width: 600px;" })%> 

bây giờ, trước khi nó đạt đến xem, "danh sách" đã điền nó với các mục và đã đánh dấu mục đã được chọn. nhưng khi nó được hiển thị, không có tùy chọn nào được đánh dấu là đã chọn.

câu hỏi của tôi là, có thể sử dụng túi xem để chuyển các mục hoặc tôi có nên sử dụng phương tiện khác không? vì nó loại bỏ cờ đã chọn trên các tùy chọn nếu tôi sử dụng nó theo cách đó.

+0

Bạn có thể ngắt điểm trong bộ điều khiển và kiểm tra lại rằng ít nhất một mục của 'danh sách' đã được gắn thẻ là' Đã chọn = true; '? Tôi không nghĩ rằng ViewBag đang rối tung với danh sách của bạn. – StuartLC

+0

vâng tôi đã làm điều đó và nó đang đánh dấu tùy chọn đúng. – gdubs

Trả lời

21

Hãy thử như thế này:

ViewBag.ListOfCodes = new SelectList(mymodelinstance.Codes, "Id", "Name"); 
ViewBag.Codes = "C"; 

và theo quan điểm của bạn:

<%= Html.DropDownList(
    "Codes", 
    (IEnumerable<SelectListItem>)ViewBag.ListOfCodes, 
    new { style = "max-width: 600px;" } 
) %> 

Để làm việc này bạn rõ ràng phải có một mục có Id = "C" trong bộ sưu tập của bạn, như thế này:

ViewBag.ListOfCodes = new SelectList(new[] 
    { 
     new { Id = "A", Name = "Code A" }, 
     new { Id = "B", Name = "Code B" }, 
     new { Id = "C", Name = "Code C" }, 
    }, "Id", "Name"); 
+0

phần nào trong số này chọn "Mã C"? – gdubs

+1

Cái này: 'ViewBag.Codes =" C ";'. Và vì trong chế độ xem, bạn đã sử dụng Mã làm đối số đầu tiên cho trình trợ giúp 'DropDownList' của bạn, nó sẽ chọn giá trị từ ViewBag. Rõ ràng mọi thứ có thể đã được một triệu lần rõ ràng hơn nếu bạn đã sử dụng một mô hình xem và một mạnh mẽ gõ 'DropDownListFor' helper và quên về ViewBag đó là những gì tôi luôn luôn khuyên mọi người. –

+0

tôi đồng ý, tôi cũng sẽ làm điều đó. nhưng trong trường hợp này, giá trị từ danh sách này sẽ được thêm vào giá trị khác của một danh sách thả xuống khác mà cuối cùng sẽ được ghi vào cá thể. tôi muốn nó được mô hình khác nhau .. – gdubs

Các vấn đề liên quan