A conversão explícita não funciona na ligação de modelo padrão

Estou usando o ASP.NET MVC2 e o Entity Framework. Vou simplificar um pouco a situação; espero que fique mais claro, não mais confuso!

Eu tenho uma ação de controlador para criar endereço e o país é uma tabela de pesquisa (em outras palavras, há um relacionamento um-para-muitos entre as classes Country e Address). Digamos com clareza que o campo na classe Address é chamado Address.Land. E, para os fins da lista suspensa, estou recebendo Country.CountryID e Country.Name.

Estou cienteValidação de modelo vs. entrada. Então, se eu chamar o campo suspensoformLand - Eu posso fazer isso funcionar. Mas se eu ligar para o campoTerra (ou seja, corresponde à variável na classe Address) - Estou recebendo o seguinte erro:

"A conversão de parâmetro do tipo 'System.String' para o tipo 'App.Country' falhou porque nenhum conversor de tipo pode converter entre esses tipos."

OK, isso faz sentido. Uma string (CountryID) vem do formulário e o fichário não sabe como convertê-la para o tipo Country. Então, eu escrevi o conversor:

namespace App {
    public partial class Country {
        public static explicit operator Country(string countryID) {
            AppEntities context = new AppEntities();
            Country country = (Country) context.GetObjectByKey(
                new EntityKey("AppEntities.Countries", "CountryID", countryID));
            return country;
        }
    }
}

FWIW, tentei explícito e implícito. Eu testei a partir do controlador -Country c = (Country)"fr" - e funciona bem. No entanto, ele nunca foi chamado quando a Visualização é publicada. Estou recebendo o mesmo erro "no type converter" no modelo.

Alguma idéia de como sugerir ao fichário do modelo que existeé um conversor de tipo? obrigado

questionAnswers(1)

yourAnswerToTheQuestion