如何在我的操作方法中从数据库中检索对象属性值?

时间:2012-04-26 14:24:23

标签: asp.net asp.net-mvc-3

我有以下Post Edit操作方法,其中包含[Bind]列表以限制模型绑定器将绑定的属性: -

 [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对象包含未包含在绑定列表中的其他属性,所以我如何从数据库中检索Visit对象属性的当前值。 提示: - 我正在使用实体框架与数据库第一种方法。 BR

更新: - 这是获取编辑的行动方法: -

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");}
            }

1 个答案:

答案 0 :(得分:0)

看起来只有Note是可编辑的,有时Status也可以编辑?基于your other related question。因为我不知道你的HTTPGet方法是什么样的,所以我在这里走出困境,而且我在EF中生锈了。

我排除了必要的检查,尝试/捕捉等......

var dbVisit = repository.GetVisit(visit.VisitId);
dbVisit.Note = visit.Note; // if this is permissible
if (dbVisit.IsEditable(...)){
     ... whatever is permissible here ...
}
repository.UpdateVisit(dbVisit); // possibly inside the if clause above
... etc ...