0

Невозможно преобразовать свойство SelectListItem.Value из string в Boolean. Как создать простой параметр «Да/Нет» со значением true/false?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()'). И обратите внимание на его бессмысленное создание 2-го идентичного 'IEnumerable ' в представлении от 1-го. - просто используйте '@ Html.DropDownListFor (m => m.YesOrNo, (IEnumerable ) ViewBag.selectList," - Select - ")' –

ответ

1

Value свойство SelectListItem имеет тип строки. Вы не можете присвоить ему значение boolean. Вы можете использовать вызов ToString() по вашему логическому значению.

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

или просто использовать строковое значение

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

Производительность разумная, есть ли разница? поскольку первый вызывает метод 'Boolean.ToString()', а второй не вызывает какой-либо метод –

Смежные вопросы