Ho tipico tipo YesNo di discesa nella domanda. Per questo, ho sviluppato la classe model (piuttosto ViewModel Utility) per future extension prupose.DropDownListFor (...) selezionando booleano false per impostazione predefinita
public string Text { get; set; } // represents text part
public bool Value { get; set; } // represent value
public List<DropDown> DropDowns { get; set; } //list for binding
public void BuildYesNoDropDown()
{
DropDowns = new List<DropDown>();
DropDowns.Add(new DropDown { Text = "Yes", Value = true });
DropDowns.Add(new DropDown { Text = "No", Value = false });
}
Poi, mi legano nella visualizzazione come segue:
@Html.DropDownListFor(x => x.SelectedValue, new SelectList(Model.DropDowns, "Value", "Text",1),"Select") //last para - OptionLabel
Nella visualizzazione, tutti e tre i parametri sono sempre di visualizzazione vale a dire "Select", "Sì" e "No". Ma, per impostazione predefinita, "No" è stato selezionato. Se faccio proprietà "Valore" come intero, allora funziona bene e per impostazione predefinita "Seleziona" ottiene selezionato, ma come detto nel codice, se io tendo ad andare con il tipo bool poi "No" viene selezionato.
Come ottenere un comportamento normale quando DataValueField è bool?
Grazie per la risposta. Ma, suppongo che la mia domanda sia stata fraintesa. Attualmente, con il valore bool predefinito, viene selezionato "NO". Invece, voglio "Seleziona" che deve essere selezionata la OptionLabel. – StartingFromScratch
Lascerò che qualcun altro risponda a questo - è necessario fornire il modello 'DropDown' per loro. – Cymen
Non ho abbastanza reputazione per postare il codice ... :(Suppongo che il problema sia con il tipo di espressione lambda. Nel codice precedente, x => il tipo x.SelectedValue è bool. Ciò spinge il motore a selezionare l'ultimo "falso "valore nella raccolta fornita." "Non sono sicuro però!" – StartingFromScratch