次の編集後アクションメソッドがあります。これには、モデルバインダーがバインドするプロパティを制限する[バインド]リストが含まれています。-
[HttpPost]
public ActionResult Edit(Bind(Include="Note,DoctorID,VisitID,StatusID")] Visit visit)
{
if ((visit.EditableByAssingedDoctor(User.Identity.Name)) || (visit.EditableByCreatedBy(User.Identity.Name)))
{ try
{if (ModelState.IsValid)
{ entities.Entry(visit).State = EntityState.Modified;
repository.Save();
return RedirectToAction("Index"); } }
catch (DbUpdateConcurrencyException ex)
{ var entry = ex.Entries.Single();
var clientValues = (Visit)entry.Entity;
//code goes here
ただし、Visit Objectにはバインドリストに含まれていない他のプロパティが含まれているため、Visitオブジェクトプロパティの現在の値をデータベースから取得する方法を説明します。ヒント:-データベースファーストアプローチでエンティティフレームワークを使用しています。BR
更新: -GET EDITアクションメソッドは次のとおりです:-
public ActionResult Edit(int id)
{
Visit visit = repository.GetVisit(id);
if ((visit.EditableByAssingedDoctor(User.Identity.Name)) || (visit.EditableByCreatedBy(User.Identity.Name)))
{
ViewBag.DoctorID = new SelectList(Membership.GetAllUsers(), "Username", "Username", visit.DoctorID);
ViewBag.StatusID = new SelectList(repository.FindAllVisitStatus(), "StatusID", "Description", visit.StatusID);
return View(visit);
}
else { return View("NotFound");}
}