У меня следующая проблема.У объекта есть адрес, а у этого адреса есть страна.Чтобы заполнить выпадающий список доступными странами в БД, я использую свойство в частичном классе объекта:
public string CountryID {
get { return this.Addresses.Countries != null ? this.Addresses.Countries.ID.ToString() : null; }
set { this.Addresses.Countries = Repository.Instance.GetCountryByID(Convert.ToInt32(value)); }
}
Сам список создается в форме вида:
Countries = new SelectList(repository.GetAllCountries(), "ID", "country_name", objectX.CountryID);
и в представлении это используется так:
<%= Html.DropDownList("CountryID", Model.Countries, "--select--")%><%= Html.ValidationMessage("CountryID", "*")%>
Проблема
Когда я создаю новый объект, все идет хорошо таким образом.Прежде чем дать новый объект моей FormViewModel, я создаю объект, новый (пустой) адресный объект и новый (пустой) объект Country.Это я перехожу к представлению в FormViewModel, и я могу создать объект по мере необходимости. Проблема возникает, когда я хочу отредактировать этот объект с той же частичной формой и тем же свойством CountryID .Он жалуется, что адреса нет, поэтому мне нужно добавить
this.AddressReference.Load()
, чтобы свойство стало:
public string CountryID {
get { this.AddressesReference.Load(); return this.Addresses.Countries != null ? this.Addresses.Countries.ID.ToString() : null; }
set { this.AddressesReference.Load(); this.Addresses.Countries = Repository.Instance.GetCountryByID(Convert.ToInt32(value)); }
}
Но теперь мой метод Create больше не работает какво время создания объект еще не привязан к контексту объекта (он все еще должен быть сохранен в БД), и
this.addressReference.Load()
вызывает проблемы.
Вопрос
Можно ли использовать одну форму (частичное представление) и одно свойство, которые использовались выше для создания, а также для редактирования объекта?
PS Мне начинает не нравиться ленивая загрузка ADO.net в MVC1, я думаю, это исправлено в MVC2, верно?