Я пытаюсь настроить представление «Правка», в котором у меня есть текстовое поле и DropDownListFor.Я нашел способ заполнить DDLF, и отображаемые и отправленные значения верны, но я не могу заставить модель корректно обновляться.
Объект, который я пытаюсь обновить, генерируется из LINQtoSQL,и в базе данных он имеет столбец внешнего ключа.В классе LINQtoSQL, который привел к связи «Содержит».Я могу получить свойство ID, представляющее столбец в БД, а также объект, который он представляет.
zupanija = new Zupanija(); //object that needs to be updated
zupanija.Drzava; //object that i want to change to make the update
zupanija.DrzavaID; //Property linked to object that should change
Единственный способ выяснить, как выполнить обновление, - это получить значение из DDLF и использовать его.чтобы получить объект, который я хочу изменить следующим образом:
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var zupanija = repo.ZupanijaById(id);
var drzava = new repoDrzava().DrzavaById(Convert.ToInt32(collection["Zupanija.DrzavaID"]));
zupanija.Drzava = drzava;
}
Также, когда я пытаюсь обновить поле идентификатора следующим образом, я получаю следующую ошибку:
zupanija.DrzavaID = Convert.ToInt32(collection["Zupanija.DrzavaID"]);
Ошибка: бросить новый System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException ();
Мне кажется, это очень паршивый способ сделать это, и я пытаюсь заставить UpdateModel работать.