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