Я использую ASP.NET MVC2 и Entity Framework.Я собираюсь немного упростить ситуацию;надеюсь, это прояснит, а не запутает!
У меня есть действие контроллера для создания адреса, и страна является справочной таблицей (другими словами, между страной иАдресные занятия).Скажем для ясности, что поле в классе Address называется Address.Land.И для целей раскрывающегося списка я получаю Country.CountryID и Country.Name.
Мне известно о Модель и проверка входных данных .Итак, если я вызываю выпадающее поле formLand - я могу заставить его работать.Но если я вызываю поле Land (то есть соответствует переменной в классе Address) - я получаю следующую ошибку:
"Преобразование параметра из типа 'System.Строка 'для типа' App.Country 'завершилась неудачно, потому что преобразователь типов не может преобразовать эти типы. "
ОК, это имеет смысл.Строка (CountryID) приходит из формы, и механизм связывания не знает, как преобразовать ее в тип Country.Итак, я написал конвертер:
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, я пробовал как явное, так и неявное.Я протестировал его с контроллера - Country c = (Country)"fr"
- и он работает нормально.Однако он никогда не вызывался при публикации View.Я получаю ту же ошибку «без преобразователя типов» в модели.
Есть идеи, как намекнуть на связыватель модели, что является преобразователем типа?Спасибо