2011-10-07 51 views
8

選擇的選項,這樣我能得到這個遠設置在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> 

而且我知道我可以存儲SelectedOptiondiv$(document).ready後以簡潔的方式使用jQuery選擇的選項設置。

是否有實現與直線上升MVC3 /剃刀任務的一個簡潔的方法?

回答

14

喜歡的東西:

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> 

話雖這麼說,這是什麼樣的東西HtmlHelper.DropDownList是。

有你的邏輯在控制器內,只是通過一個IEnumerable通過ViewBag。在這一點上,你只需要調用助手在視圖中:

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

條件應該是對選擇的屬性而不是它的值:<選項值= 「2010」 @(selectedOption == 2010 「選擇」: 「」)> 2010 –

+2

'選定= 「選擇」'是XHTML sintax 。從HTML 4.01開始可以使用'selected'。底線,他們都工作,因爲價值部分在HTML上被忽略。 – Joao

+1

我接受的答案並不適用於我,但Amr Elgarhy的解決方案確實如此。接受的答案最終會在標記中放入selected =「」,至少在IE中最終會選擇選項框。 – 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

html輸出結果被選中=「選中」,任何人有任何運氣只是讓剃刀輸出所選的單詞? –

4

的方法,回答正確的問題是不工作的,現在,它更好地使用下面的例子:

<option value="someValie" @(ViewBag.someVariable == "someValue" ? "selected" : String.Empty)>...</option>