0

SelectListItem.ValueプロパティをstringからBooleanに変換することはできません。 true/falseという値を持つ単純なYes/Noオプションを作成するにはどうすればよいですか?文字列の代わりにブール値を持つSelectListItem

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

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

を使うのか? – Shyju

+0

'Value'プロパティは' string'なので、 'Value =" False "'(または 'Boolean.ToString()'を使います)。また、第1のビューから見て2番目の同じ 'IEnumerable 'を作成するのは無意味です。 "@ Html.DropDownListFor(m => m.YesOrNo、(IEnumerable )ViewBag.selectList、" - Select - ")' –

答えて

1

Value財産SelectListItemのビューはタイプ文字列です。ブール値を代入することはできません。ブール値にToString()呼び出しを使用することができます。

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

または単純にどのようにラジオボタン(複数可)への切り替えについては、文字列値

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

パフォーマンスは賢明ですが、違いはありますか?最初のメソッドは 'Boolean.ToString()'メソッドを呼び出すので、もう1つはメソッドを呼び出さないからです –

関連する問題