2010-06-30 31 views
21

Tôi đang mở rộng một Enum và, với mã sau đây, selectListItems là một danh sách chung của SelectListItems có tất cả các giá trị chính xác cho Enum của tôi.Vấn đề với ASP.Net MVC SelectLIst và List <SelectListItems>

Vòng lặp foreach đầu tiên hoạt động tốt. Tuy nhiên, khi tôi tạo SelectList thực tế và vượt qua trong selectListItems, tất cả các giá trị sẽ bị mất. Làm cách nào để giữ nguyên các giá trị đó?

foreach (SelectListItem item in selectListItems) 
{ 
    string tex = item.Text; 
    string val = item.Value; 
    string sel = item.Selected.ToString(); 
} 

SelectList selectList = new SelectList(selectListItems); 

foreach (SelectListItem slid in selectList) 
{ 
    string tex = slid.Text; 
    string val = slid.Value; 
    string sel = slid.Selected.ToString(); 
} 
+1

SelectList selectList = new SelectList (selectListItems, "Text", "Value"); Tính năng này hoạt động. Tôi không chắc chắn lý do tại sao nó không hoạt động mà không có nó mặc dù. Bất kỳ ai? – Ted

Trả lời

50

Bạn cần thay đổi dòng nơi bạn xây dựng nó để cho biết nơi tìm giá trị. Trong trường hợp của bạn, nó sẽ là:

SelectList selectList = new SelectList(selectListItems, "Value", "Text"); 

Điều này sẽ không mang theo mục đã chọn. Trong trường hợp đó, bạn sẽ cần tìm ra mục nào sẽ là mục được chọn và chuyển giá trị của nó qua thông số thứ ra.

Dưới đây là một ví dụ:

List<SelectListItem> items = new List<SelectListItem>(); 
items.Add(new SelectListItem() { Text = "Test1", Value = "1", Selected = false }); 
items.Add(new SelectListItem() { Text = "Test8", Value = "8", Selected = true }); 
items.Add(new SelectListItem() { Text = "Test3", Value = "3", Selected = false }); 
items.Add(new SelectListItem() { Text = "Test5", Value = "5", Selected = false }); 

SelectList sl = new SelectList(items, "Value", "Text", "8"); 

Bạn cũng có thể muốn kiểm tra this SO thread mà có thể hữu ích.

Chỉnh sửa: Chỉ nhìn thấy nhận xét của bạn và nó không hoạt động vì không đủ thông minh để biết tìm kiếm các trường TextValue theo mặc định. Bạn có thể truyền cho nó một loại đối tượng và nó cho bạn khả năng liên kết với nó bằng cách xác định các thuộc tính nào để ánh xạ tới các thuộc tính TextValue.

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