を使用して、コントローラでは、モデルプロパティの状態変化を検出:は、私は、多かれ少なかれ標準探しのモデルを持っているEntity Frameworkの
public class Project {
public int ID { get; set; }
//... some more properties
public DateTime StartDate { get; set; }
public int Duration { get; set; }
}
ユーザーがStartDate
またはプロジェクトDuration
を変更した場合、私は更新する機能を呼び出す必要がありますシミュレーション。これを達成するために、コントローラー内のフィールドStartDate
とDuration
の状態変化を検出したいと思います。そのような
何か:ここ
if(project.StartDate.stateChange() || project.Duration.stateChange())
は、コントローラのメソッドがどのように見えるかの例です:
[HttpPost]
public ActionResult Edit(Project project)
{
if (ModelState.IsValid)
{
if(project.StartDate.stateChange() || project.Duration.stateChange())
doSomething();
db.Entry(project).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(project);
}
任意のアイデアを、どのように私はこれを達成することができますか?
私はこれを試しました。次のエラーが表示されます。 'ObjectStateManagerに同じキーを持つオブジェクトが既に存在します。 ObjectStateManagerは、同じキーを持つ複数のオブジェクトを追跡できません。 説明:現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。 例外の詳細:System.InvalidOperationException:ObjectStateManagerに同じキーを持つオブジェクトが既に存在します。 ObjectStateManagerは同じキーを持つ複数のオブジェクトを追跡できません。 ' – Chopo87
' db.Entry(元).State = EntityState.Modified;の有無にかかわらず? –
良い点は、それを試してみましょう – Chopo87