2011-10-07 11 views
8

così posso arrivare a questo puntoImpostare l'opzione selezionata in 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> 

E so che posso conservare SelectedOption in un div e impostare l'opzione selezionata con jQuery in modo conciso dopo $(document).ready.

Esiste un metodo conciso per eseguire l'attività con MVC3/rasoio?

risposta

14

Qualcosa di simile:

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> 

Detto questo, questo è il genere di cose HtmlHelper.DropDownList è per.

Avere la logica all'interno del controller e solo passare un IEnumerable attraverso ViewBag. A quel punto non resta che chiamare l'aiutante all'interno della vista:

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

La condizione deve essere sull'attributo Selected non sul suo valore:

+2

'selected =" selected "' è la sintassi XHTML . 'selected' è disponibile da HTML 4.01 in poi. In conclusione, funzionano entrambi perché la parte valore è ignorata su HTML. – Joao

+1

La risposta accettata non ha funzionato per me, ma la soluzione di Amr Elgarhy lo ha fatto. La risposta accettata finisce per mettere select = "" nel markup, che (almeno in IE) finisce per selezionare comunque la casella di opzione. – 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

L'output html finisce per essere selezionato = "selezionato", chiunque ha fortuna a fare in modo che il rasoio emetta solo la parola selezionata? –

4

Il metodo, risolta in senso domanda corretta non funziona, per ora, è meglio utilizzare l'esempio seguente:

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