2011-10-07 16 views
8

Więc mogę zajść tak dalekoUstawianie wybranej opcji w 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> 

I wiem, że mogę przechowywać SelectedOption w div i ustawić wybraną opcję z jQuery w zwięzły sposób po $(document).ready.

Czy istnieje zwięzła metoda wykonania zadania za pomocą prostego MVC3/maszynki do golenia?

Odpowiedz

14

Coś jak:

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> 

Powiedział, że jest to rodzaj rzeczy HtmlHelper.DropDownList jest.

Wyraź swoją logikę wewnątrz kontrolera i po prostu zdać IEnumerable przez ViewBag. W tym momencie po prostu trzeba wywołać pomocnika w widoku:

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

Warunek powinien dotyczyć Wybranego atrybutu, a nie jego wartości: 2010 –

+2

'selected =" selected "' to sintax XHTML . "selected" jest dostępne od wersji HTML 4.01 i wyższej. Podsumowując, oba działają, ponieważ część wartości jest ignorowana w HTML. – Joao

+1

Przyjęta odpowiedź nie zadziałała, ale rozwiązanie Amr Elgarhy zrobiło. Przyjmowana odpowiedź kończy się umieszczaniem zaznaczonego znaku "" "w znaczniku, który (przynajmniej w IE) kończy się mimo to wybraniem pola opcji. – 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

Wyjście html jest zaznaczone = "wybrane", czy ktoś ma szczęście, gdy brzytwę wypuszcza tylko wybrane słowo? –

4

Sposób, odpowiedział we właściwym pytaniem nie działa teraz, to lepiej użyć następny przykład:

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