私は2つのオブジェクトを持っています:-
LabTest
LabTestDetails
LabTest
オブジェクトがゼロまたは多数のオブジェクトを持つことができる場所LabTestDetails
。次のビジネスルールを実装する必要があります:-
LabTest オブジェクトが 1 つ以上の LabTestDetails オブジェクトに割り当てられている場合、ユーザーは LabTest オブジェクトを編集できません。
現在、LabTest オブジェクトで名前が付けられたヘルパー メソッドを実装してIsAlreadyAssigned
います (LabTest オブジェクトが LabTestDetails オブジェクトに割り当てられているかどうかを確認するため):-
public partial class LabTest
{
public bool IsAlreadyAssigned(int id)
{
return (LabTestDetailss.Any(r2 => r2.LabTestID == id));
}}
Get & Post
次に、編集アクション メソッドに次のチェックを追加しました。
public ActionResult Edit(int id)
{
LabTest c = repository.GetLabTest (id);
if ((c == null) || (c.IsAlreadyAssigned (id)))
{
return View("Error");
}
return View(c);
}
[HttpPost]
public ActionResult Edit(int id, FormCollection colletion)
{
LabTest c = repository.GetLabTest (id);
if ((c == null) || (c.IsAlreadyAssigned (id))) // *******
{
return View("Error");
}
try
{
if (TryUpdateModel(c))
{
elearningrepository.Save();
return RedirectToAction("Details", new { id = c.LabTestID });
}
}
上記はほとんどの場合うまくいくかもしれませんが、ポスト アクション メソッドLabTest
のチェック後にオブジェクトが別のユーザーによって labTestDetails オブジェクトに割り当てられた場合、上記のコードで ( * ) としてマークすると、ビジネス ロジックは次のようになります。壊れる。if ((c == null) || (c.IsAlreadyAssigned (id)))
LabTestdetail オブジェクトに割り当てられている場合、LabTest オブジェクトを常に編集できないように、アクション メソッドを実装する方法はありますか。
ブラジル