7

Tôi đang sử dụng MVC 5.MVC DropDownList chọn giá trị không làm việc

Tôi có ViewBag tôi cho danh sách như

ViewBag.TitleList = new SelectList((new string[] { "Mr", "Miss", "Ms", "Mrs" }), contact.Title); 
//contact.Title has selected value. 

sau đó tôi đã cố gắng chuyển đổi mảng để SelectListItem (to no avail)

Trên các Xem nó trông như

@Html.DropDownListFor(model => model.Title, ViewBag.TitleList as SelectList, "Select") 

tôi cũng đã thử

@Html.DropDownList("Title", ViewBag.TitleList as SelectList, "Select") 

Tải danh sách thành công nhưng Selected Value is Not selected. Cách khắc phục sự cố này?

Cập nhật Thủ phạm là ViewBag.Title khớp với mẫu của tôi.Title. Đổi tên thuộc tính mô hình của tôi thành một cái gì đó khác và nó hoạt động. Arrgh!

+2

Sử dụng '@ Html.DropDownListFor()' nếu giá trị của 'model.Title' là (nói) "Hoa hậu", sau đó lựa chọn thứ 2 sẽ được chọn (bạn không cần tham số thứ 2 trong hàm tạo 'SelectList'). Kiểm tra giá trị của 'Tiêu đề' khớp chính xác với một trong các giá trị tùy chọn hay không. –

+0

Có giá trị trong Tiêu đề khớp với các giá trị trong danh sách – Ruchan

+0

Có thể đây là bản sao của bài đăng đó. [Có thể trùng lặp] [1] [1]: http://stackoverflow.com/questions/5858679/preselect-items-in-multiselect-listbox-mvc3-razor – Tobias

Trả lời

9

Set giá trị của tài sản Title trong bộ điều khiển:

ViewBag.TitleList = new SelectList(new string[] { "Mr", "Miss", "Ms", "Mrs" }); 
viewModel.Title = "Miss"; // Miss will be selected by default 

Một lý do khác có thể (và điều đúng, dựa trên các ý kiến ​​dưới đây) là ViewData["Title"] sẽ bị thay thế bởi giá trị khác. Thay đổi tên của bất động sản Title cho bất kỳ khác và mọi thứ sẽ hoạt động.

+0

'Tiêu đề' đã có giá trị trong khi tải. nó là một phần của phương pháp chỉnh sửa. – Ruchan

+0

@Ruchan, khi đó giá trị của 'Title' không khớp với một trong 4 giá trị đó (có thể kiểm tra khoảng trắng) hoặc cố gắng thực hiện điều này trong vòng lặp –

+4

@Ruchan, Có cơ hội nào bạn đặt tiêu đề không của trang bằng cách sử dụng 'Title' làm khóa:' ViewBag.Title = "Edit" '? Hãy thử thay đổi tên thuộc tính thành bất kỳ tên nào khác. – Zabavsky

2

Khi giá trị không được chỉ định (ví dụ: "Id"), DropDownListFor đôi khi không hoạt động đúng. Hãy thử điều này:

public class FooModel 
{ 
    public int Id { get; set; } 
    public string Text { get; set; } 
} 

var temp = new FooModel[] 
{ 
    new FooModel {Id = 1, Text = "Mr"}, new FooModel {Id = 2, Text = "Miss"}, 
    new FooModel {Id = 3, Text = "Ms"}, new FooModel {Id = 4, Text = "Mrs"} 
         }; 
ViewBag.TitleList = new SelectList(temp, "Id", "Text", 2); 

EDIT: sololution khác

var temp = new [] 
{ 
    new SelectListItem {Value = "Mr", Text = "Mr"}, new SelectListItem {Value = "Miss", Text = "Miss"}, 
    new SelectListItem {Value = "Ms", Text = "Ms"}, new SelectListItem {Value = "Mrs", Text = "Mrs"} 
}; 
ViewBag.TitleList = new SelectList(temp, "Value", "Text", "Miss"); 
+0

Xem Ivan, khi bạn tự giải quyết vấn đề, nó được gọi là _sololution_. –

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