テキスト ボックスと DropDownListFor がある編集ビューを設定しようとしています。DDLF にデータを入力する方法を見つけました。レンダリングされた値とポストされた値は正しいのですが、モデルを適切に更新できないようです。
更新しようとしているオブジェクトは LINQtoSQL から生成され、データベースには外部キー列があります。「Contains」関係になった 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 を機能させようとしています。