J'essaie de trouver la syntaxe Razor correcte pour des boutons radio s'excluant mutuellement qui reflètent la valeur d'une propriété booléenne sur mon modèle. Mon modèle a ceci:
public bool IsFemale{ get; set; }
J'aimerais afficher ceci avec deux boutons radio, l'un "Male" et l'autre "Female", mais tout ce que j'ai essayé jusqu'à présent n'a pas reflété la valeur réelle de la propriété IsFemale
sur le modèle. Actuellement, j'ai ceci:
@Html.RadioButtonFor(model => model.IsFemale, !Model.IsFemale) Male
@Html.RadioButtonFor(model => model.IsFemale, Model.IsFemale) Female
Cela semble conserver correctement la valeur si je modifie et met à jour, mais ne marque pas la valeur correcte comme étant cochée. Je suis sûr que c'est stupide, mais je suis coincé.
Essayez comme ça:
@Html.RadioButtonFor(model => model.IsFemale, "false") Male
@Html.RadioButtonFor(model => model.IsFemale, "true") Female
Et voici le code complet:
Modèle:
public class MyViewModel
{
public bool IsFemale { get; set; }
}
Manette:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel
{
IsFemale = true
});
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return Content("IsFemale: " + model.IsFemale);
}
}
Vue:
@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>
}
Dans MVC 6 (ASP.NET Core), cela peut également être réalisé avec des aides de balises:
<label>
<input type="radio" asp-for="IsFemale" value="false" /> Male
</label>
<label>
<input type="radio" asp-for="IsFemale" value="true" /> Female
</label>