Como usar Html.GetUnobtrusiveValidationAttributes ()

Estou tentando contornar o fato de que, quando escreveram o asp.net MVC 3, esqueceram de incluir código para adicionar atributos de validação discretos para selecionar listas e seus"consertar" para isso é incluí-lo no MVC 4, que não é muito útil para quem usa o MVC 3.

A minha solução proposta é usarHtml.GetUnobtrusiveValidationAttributes() para adicioná-los, como qualquer outro atributo personalizado, mas não consigo descobrir a sintaxe correta para chamar o método. Existem 2 sobrecargas, uma pega uma string e a outra pega uma string e uma classe ModelMetaData. Eu entendo os parâmetros de metadados, presumo que apenas passoViewData.ModelMetadata mas qual deve ser a string? A documentação do MSDN diz que é "o atributo de nome HTML especificado" que não faz sentido para mim. O atributo do nome HTML de quê? A lista de seleção? Por que seria necessário e como isso ajuda a saber para qual propriedade do meu modelo eu quero a validação? Olhando para exemplos de uso, todos parecem passar o nome da propriedade no meu modelo para o qual desejo os atributos de validação, o que faz sentido. Infelizmente, não consigo obter o método para retornar nada além de uma coleção vazia, não importa o que eu pass

Minha classe de modelo é chamada Event e minha propriedade é chamada EventTypeID. Estou usando uma classe viewmodel um pouco diferente como base para a exibição, porque preciso exibir uma lista de Eventos e também permitir que um novo evento seja inserido na mesma exibição, para que eu tenha uma classe viewmodel simples como abaixo:

public class EventViewModel
{
    public Model.Event NewEvent { get; set; }
    public IEnumerable<Model.Event> Events { get; set; }
}

A lista suspensa é mapeada para a propriedade como:@Html.DropDownListFor(model => model.NewEvent.EventTypeID o que passo como string paraHtml.GetUnobtrusiveValidationAttributes(string) ouHtml.GetUnobtrusiveValidationAttributes(string, ModelMetadata) para obter os atributos para esta propriedade. Eu tentei

Html.GetUnobtrusiveValidationAttributes("EventTypeID")
Html.GetUnobtrusiveValidationAttributes("EventTypeID",ViewData.ModelMetadata)
Html.GetUnobtrusiveValidationAttributes("NewEvent.EventTypeID")
Html.GetUnobtrusiveValidationAttributes("NewEvent.EventTypeID",ModelMetadata)

odos retornam uma coleção vazi

Sei que meu modelo está correto, porque se eu alterar a chamada deHtml.DropDownListFor paraHtml.TextBoxFor então a validação "simplesmente funciona" sem que eu precise fazer outra coisa senão adicionar os atributos de validação à minha classe de model

EDITAR

Apenas tentei desativar a validação do lado do cliente, a validação funciona bem no servidor para todas as listas de seleçã

questionAnswers(3)

yourAnswerToTheQuestion