Condicionalmente incluya el atributo marcado en html.RadioButtonFor (MVC4 / Razor)

Cuando incluye explícitamente el atributo marcado en un elemento html codificado manualmente, como un botón de opción, puede usar un bool para determinar si ese atributo existirá en ese elemento como se ve aquí. Para aquellos que no quieran hacer clic en el enlace y darle a este tipo algo de tráfico bien merecido:

@{ bool agree = true; }

Sin embargo, digamos que quiero usar @Html.RadioButtonFor() , con un objeto. Lo mismo no ocurre.

@Html.RadioButtonFor(m => m.Property, "ValueOfTextBox", new { @id = "MyId", @class = "my-class", autocomplete = "off", @checked = someBoolValue }) .

Lo anterior da un atributo checked="true" o checked="false" .

Las discrepancias entre nuestro Modelo de Dominio, el Modelo de Vista y muchas otras cosas nos impiden poder utilizar algunos andamios más interesantes … y posiblemente, si está incluyendo esta cantidad de atributos, puede que sea mejor que no use el ayudante. … pero ¿hay alguna manera de hacer que el ayudante tenga el mismo comportamiento que el HTML simple?

He creado un método de extensión adicional en HtmlHelper para incluir un valor bool que controla la presencia del atributo, pero me encantaría saber si existe una forma más directa de comportamiento de marco para resolver este problema en particular.

Realmente no es necesario que establezca el atributo checked esta manera: el ayudante lo hará por usted según el valor de la propiedad. Por ejemplo, si su modelo tiene propiedad Gender y desea renderizar botones de radio para “Hombre” y “Mujer”

 @Html.RadioButtonFor(m => m.Gender, "Male")Male @Html.RadioButtonFor(m => m.Gender, "Female")Female 

y el valor de Gender es “Femenino”, luego, cuando se represente la página, se marcará el segundo botón de opción. similar

 @Html.CheckboxFor(m => m.IsMale) 

hará que la checkbox se IsMale = true si IsMale = true y no se selecciona si IsMale = false