我正在尝试设置一个编辑视图,在该视图上我有一个文本框和 DropDownListFor。我已经找到了一种填充 DDLF 的方法,并且渲染和发布的值是正确的,但我似乎无法让模型正确更新。
我试图更新的对象是从 LINQtoSQL 生成的,并且在数据库中它具有外键列。在导致“包含”关系的 LINQtoSQL 类中。我可以访问代表 DB 中的列的 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;
}
此外,当我尝试像这样更新 ID 字段时,我得到以下错误:
zupanija.DrzavaID = Convert.ToInt32(collection["Zupanija.DrzavaID"]);
错误:抛出新的 System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
在我看来,这样做是非常糟糕的方式,我正试图让 UpdateModel 工作。