2011-10-07 26 views
8

Vì vậy, tôi có thể có được điều này xaĐặt tùy chọn này được chọn trong MVC3

string selectedOption = ViewBag.SelectedOption; 

<select id="SelectedYear" name="SelectedYear">  
    <option value="2010">2010</option>//if(selectedOption == 2010)...meh... 
    <option value="2011">2011</option>    
    <option value="2012">2012</option> 
    <option value="2013">2013</option> 
</select> 

Và tôi biết tôi có thể lưu trữ SelectedOption trong một div và thiết lập các tùy chọn chọn với jQuery một cách ngắn gọn sau $(document).ready.

Có phương pháp súc tích nào để thực hiện tác vụ với thẳng lên MVC3/dao cạo không?

Trả lời

14

Cái gì như:

int selectedOption = ViewBag.SelectedOption; 

<select id="SelectedYear" name="SelectedYear">  
    <option value="2010" selected="@(selectedOption == 2010 ? "selected" : "")">2010</option> 
    <option value="2011" selected="@(selectedOption == 2011 ? "selected" : "")">2011</option>    
    <option value="2012" selected="@(selectedOption == 2012 ? "selected" : "")">2012</option> 
    <option value="2013" selected="@(selectedOption == 2013 ? "selected" : "")">2013</option> 
</select> 

đó đang được nói, đây là loại công cụ HtmlHelper.DropDownList là cho.

Có logic của bạn bên trong bộ điều khiển và chỉ cần vượt qua IEnumerable thông qua ViewBag. Vào thời điểm đó bạn chỉ cần gọi helper trong tầm nhìn:

@Html.DropDownList("optionName", ViewBag.MyOptionsList as IEnumerable<SelectListItem>) 
+6

Điều kiện phải thuộc tính Được chọn chứ không phải giá trị của nó:

+2

'selected =" selected "' là XHTML sintax . 'selected' có sẵn từ HTML 4.01 trở lên. Tóm lại, cả hai đều hoạt động vì phần giá trị được bỏ qua trên HTML. – Joao

+1

Câu trả lời được chấp nhận không phù hợp với tôi, nhưng giải pháp của Amr Elgarhy đã làm. Câu trả lời được chấp nhận kết thúc bằng việc đánh dấu chọn "" vào đánh dấu, cái mà (ít nhất là trong IE) kết thúc bằng việc chọn hộp tùy chọn. – RamblerToning

7
int selectedOption = ViewBag.SelectedOption; 


<select id="SelectedYear" name="SelectedYear"> 

<option value="2010" @if(selectedOption == 2010){<text>selected="selected"</text>}>2010</option> 

... 

</select> 
+0

Đầu ra html kết thúc được chọn = "được chọn", bất kỳ ai có may mắn chỉ nhận được dao cạo để xuất chỉ từ được chọn? –

4

Phương pháp này, đã trả lời trong câu hỏi đúng là không làm việc cho bây giờ, nó tốt hơn để sử dụng ví dụ tiếp theo:

<option value="someValie" @(ViewBag.someVariable == "someValue" ? "selected" : String.Empty)>...</option> 
Các vấn đề liên quan