MVC4: два переключателя для одного свойства булевой модели
Я пытаюсь найти правильный синтаксис Razor для взаимоисключающих переключателей, которые отражают значение логического свойства в моей модели. Моя модель имеет следующее:
public bool IsFemale{ get; set; }
Я хотел бы показать это с помощью двух переключателей: "Мужской" и другой "Женский", но все, что я пробовал до сих пор, не отразило фактическое значение свойства IsFemale
на модели. В настоящее время у меня есть это:
@Html.RadioButtonFor(model => model.IsFemale, !Model.IsFemale) Male
@Html.RadioButtonFor(model => model.IsFemale, Model.IsFemale) Female
Это похоже на правильное сохранение значения, если я изменяю и обновляю, но не отмечаю правильное значение, как отмечено. Я уверен, что это что-то глупое, но я застрял.
Ответы
Ответ 1
Попробуйте вот так:
@Html.RadioButtonFor(model => model.IsFemale, "false") Male
@Html.RadioButtonFor(model => model.IsFemale, "true") Female
И вот полный код:
Модель:
public class MyViewModel
{
public bool IsFemale { get; set; }
}
Контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel
{
IsFemale = true
});
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return Content("IsFemale: " + model.IsFemale);
}
}
Вид:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.RadioButtonFor(model => model.IsFemale, "false", new { id = "male" })
@Html.Label("male", "Male")
@Html.RadioButtonFor(model => model.IsFemale, "true", new { id = "female" })
@Html.Label("female", "Female")
<button type="submit">OK</button>
}
Ответ 2
В MVC 6 (Core ASP.NET) это также может быть достигнуто с помощью помощников тегов:
<label>
<input type="radio" asp-for="IsFemale" value="false" /> Male
</label>
<label>
<input type="radio" asp-for="IsFemale" value="true" /> Female
</label>