ASP.NET MVC コントローラーのメソッドを使用して新しく作成したオブジェクトを挿入しようとしている GUID 主キーを持つテーブルがありますUpdateModel
(db は LINQ-to-SQL データ コンテキストです)。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
Fields field = new Fields();
field.ID = Guid.NewGuid();
try
{
UpdateModel(field);
db.Fields.InsertOnSubmit(field);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View("Edit", field);
}
}
まず、モデルの編集および作成用に自動生成されたビューに、ユーザーが編集するための主キー フィールドが含まれているのは奇妙に思えますが、それらを削除するのは簡単です。
しかし、主キーがフォーム コレクションの一部として渡されない場合に、への呼び出しでUpdateModel
例外がスローされるという問題が発生しています。
UpdateModel
主キー列に、ユーザー (ひいては への呼び出し) がいじってはいけないものとしてフラグを立てる方法がありませんか? 配列を追加してincludeProperties
、主キーの名前を除外することもできますが、それはあまり DRY ではありません)。
主キーを組み込んだ非表示フィールドをフォームに追加することもできます。GUID 主キーを使用すると、Create への GET 要求でこれを行うことができます。