asp.net-mvc - net - poner imagen en html actionlink
MVC4: dos botones de opciĆ³n para una sola propiedad de modelo booleano (2)
Estoy intentando encontrar la sintaxis Razor correcta para botones de opción mutuamente excluyentes que reflejan el valor de una propiedad booleana en mi modelo. Mi modelo tiene esto:
public bool IsFemale{ get; set; }
Me gustaría mostrar esto con dos botones de opción, uno "Hombre" y el otro "Mujer", pero todo lo que he intentado hasta ahora no ha reflejado el valor real de la propiedad IsFemale
en el modelo. Actualmente, tengo esto:
@Html.RadioButtonFor(model => model.IsFemale, !Model.IsFemale) Male
@Html.RadioButtonFor(model => model.IsFemale, Model.IsFemale) Female
Esto parece persistir el valor correctamente si cambio y actualizo, pero no marca el valor correcto como está marcado. Estoy seguro de que esto es algo estúpido, pero estoy atascado.
En MVC 6 (ASP.NET Core) esto también se puede lograr con ayudantes de etiquetas:
<label>
<input type="radio" asp-for="IsFemale" value="false" /> Male
</label>
<label>
<input type="radio" asp-for="IsFemale" value="true" /> Female
</label>
Pruebe de esta manera:
@Html.RadioButtonFor(model => model.IsFemale, "false") Male
@Html.RadioButtonFor(model => model.IsFemale, "true") Female
Y aquí está el código completo:
Modelo:
public class MyViewModel
{
public bool IsFemale { get; set; }
}
Controlador:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel
{
IsFemale = true
});
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return Content("IsFemale: " + model.IsFemale);
}
}
Ver:
@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>
}