0

Il n'est pas possible de convertir la propriété SelectListItem.Value de string en Boolean. Comment puis-je créer une simple option Oui/Non avec la valeur true/false?SelectListItem avec des valeurs booléennes, au lieu des chaînes

private List<SelectListItem> getYNOptions() 
     { 
      List<SelectListItem> yn = new List<SelectListItem>(); 
      yn.Add(new SelectListItem() { 
       Text = "Yes", 
       Value=true, // error 
       Selected = false 
      }); 
      yn.Add(new SelectListItem() 
      { 
       Text= "No", 
       Value = false, // error 
       Selected = false 
      }); 
      return yn; 
     } 

public ActionResult Index(){ 
    ViewBag.selectList = getYNOptions(); 
    return View(); 
} 

Voir

@Html.DropDownListFor(model => model.YesOrNo, new SelectList(ViewBag.selectList,"Value","Text"), "-- Select --") 
+0

Que diriez-vous de passer à bouton radio (s)? – Shyju

+0

La propriété 'Value' est un' string' alors utilisez 'Value =" False "' (ou utilisez 'Boolean.ToString()'). Et notez qu'il est inutile de créer un 2nd 'IEnumerable ' identique dans la vue du 1er. - il suffit d'utiliser '@ Html.DropDownListFor (m => m.YesOrNo, (IEnumerable ) ViewBag.selectList," - Select - ")' –

Répondre

1

Value propriété de SelectListItem est de type chaîne . Vous ne pouvez pas affecter une valeur booléenne à cela. Vous pouvez utiliser l'appel ToString() sur votre valeur booléenne.

new SelectListItem() { Text = "Yes", Value=true.ToString(), Selected = false } 

ou tout simplement utiliser une valeur de chaîne

new SelectListItem() { Text = "Yes", Value="True", Selected = false } 
+0

Performance sage, y a-t-il une différence? puisque le premier appelle la méthode 'Boolean.ToString()', et le second n'appelle aucune méthode –