0

Es ist nicht möglich, die Eigenschaft SelectListItem.Value von string in zu konvertieren. Wie erstelle ich eine einfache Ja/Nein-Option mit dem Wert true/false?SelectListItem mit booleschen Werten anstelle von Strings

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(); 
} 

Ansicht

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

Wie über einen Wechsel zu Radio Taste (n)? – Shyju

+0

Die Eigenschaft 'Value' ist eine' Zeichenkette', also verwenden Sie 'Value =" False "' (oder verwenden Sie 'Boolean.ToString()'). Beachten Sie, dass es sinnlos ist, ein zweites identisches 'IEnumerable ' in der Ansicht vom ersten zu erstellen. - Verwenden Sie einfach '@ Html.DropDownListFor (m => m.YesOrNo, (IEnumerable ) ViewBag.selectList," - Wählen Sie - ")' –

Antwort

1

Value Eigenschaft SelectListItem ist vom Typ String. Sie können dem keinen booleschen Wert zuweisen. Sie können den Aufruf ToString() für Ihren booleschen Wert verwenden.

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

oder einfach nur einen Wert Zeichenfolge verwendet

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

Leistung weise, gibt es einen Unterschied? da der erste die Methode 'Boolean.ToString()' aufruft und der zweite keine Methode aufruft –

Verwandte Themen