MVC3 EditorTemplate para un booleano anulable usando RadioButtons

Tengo una propiedad en uno de mis objetos que es un booleano anulable, quiero que mi lógica tenga verdadero representar Sí, falso para ser No y nulo para N / A. Ahora, como voy a tener múltiples propiedades como esta en muchos objetos diferentes, tiene más sentido crear un editor y mostrar plantillas para estas propiedades. Voy a usar jQuery UI para aplicar un elemento visual del conjunto de botones después de que todo esto funcione, pero por ahora, eso está fuera del alcance de mi problema. Mi plantilla de editor se ve así.

@model bool?
<div data-ui="buttonset">
@Html.RadioButtonFor(x => x, true, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "Yes"}) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))Yes">Yes</label>
@Html.RadioButtonFor(x => x, false, new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "No" }) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))No">No</label>
@Html.RadioButtonFor(x => x, "null", new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "NA" }) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))NA">N/A</label>
</div>

Mi problema es que bajo ninguna circunstancia puedo obtener esta plantilla de editor para mostrar el valor actual del modelo correctamente. Debido a que no estoy representando una propiedad de un modelo en este ámbito sino el modelo en sí, la lógica integrada en MVC3 no establecerá la propiedad marcada correctamente debido a una verificación que se realiza para verificar que el nombre no esté vacío o sea nulo (consulte MVC3 fuente, InputExtensions.cs: línea # 259). No puedo establecer el atributo marcado dinámicamente comparándolo con el Modelo porque el navegador verifica el botón de radio en presencia del atributo marcado, no es su valor, por lo que aunque mis botones de radio se vean como el siguiente, el último sigue siendo el seleccionado .

<div class="span-4" data-ui="buttonset">
<input checked="checked" id="MyObject_BooleanValueYes" name="MyObject.BooleanValue" type="radio" value="True" /><label for="MyObject_BooleanValueYes">Yes</label>
<input checked="" id="MyObject_BooleanValueNo" name="MyObject.BooleanValue" type="radio" value="False" /><label for="MyObject_BooleanValueNo">No</label>
<input checked="" id="MyObject_BooleanValueNA" name="MyObject.BooleanValue" type="radio" value="null" /><label for="MyObject_BooleanValueNA">N/A</label>
</div><span class="field-validation-valid" data-valmsg-for="MyObject.BooleanValue" data-valmsg-replace="true"></span>&nbsp;</div>

No puedo agregar condicionalmente el HtmlAttribute usando algo comoif?truevalue:falsevalue porque las partes verdaderas / falsas serían de diferentes tipos anónimos y obtengo un error.

Estoy luchando sobre cómo se debe hacer esto y espero que alguno de ustedes tenga una sugerencia sobre cómo abordar este problema.

Respuestas a la pregunta(5)

Su respuesta a la pregunta