MVC3 EditorTemplate para um booleano anulável usando RadioButtons

Eu tenho uma propriedade em um dos meus objetos que é um booleano anulável, quero que minha lógica tenha true represente Sim, false seja No e nulo seja N / A. Agora, como vou ter várias propriedades como essa em muitos objetos diferentes, faz mais sentido criar um editor e exibir modelos para essas propriedades. Vou usar a interface do usuário do jQuery para aplicar um elemento visual do buttonset depois que tudo estiver funcionando, mas, por enquanto, isso está além do escopo do meu problema. Meu modelo de editor fica assim.

@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>

Meu problema é que, sob nenhuma circunstância, posso obter esse modelo de editor para mostrar o valor atual do modelo corretamente. Como não estou processando uma propriedade de um modelo neste escopo, mas o próprio modelo, a lógica incorporada no MVC3 não configurará a propriedade marcada corretamente devido a uma verificação feita para verificar se o nome não está vazio ou é nulo (consulte MVC3 fonte, InputExtensions.cs: linha 259). Não consigo definir o atributo verificado dinamicamente comparando com o modelo porque o navegador verifica o botão de opção na presença do atributo verificado, não é seu valor, mesmo que meus botões de opção se pareçam com o seguinte, o último ainda é o selecionado .

<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>

Não posso adicionar condicionalmente o HtmlAttribute usando algo comoif?truevalue:falsevalue porque as partes true / false seriam de diferentes tipos anônimos e eu recebo um err

Estou lutando para saber como isso deve ser feito e espero que um de vocês tenha uma sugestão sobre como resolver esse problema?

questionAnswers(5)

yourAnswerToTheQuestion