我有问题,似乎我的模型在数据库更改后没有更新。我有一个列表,每个列表都有批准或拒绝的按钮。
using (Html.BeginForm("LeaveProcess", "Admin", FormMethod.Post, new { @class = "form-horizontal" }))
{
<input type="text" name="LvAppId" hidden value="@item.LvAppId">
<li><button type="submit" class="btn btn-link" name="AppVal" value=true data-confirm="are u sure?" >Approve</button></li>
<li><button type="submit" class="btn btn-link" name="AppVal" value=false >Reject</button></li>
}
当我按下批准或拒绝按钮时,该提交按钮的值将转到控制器
[HttpPost]
public ActionResult LeaveProcess(string LvAppId, bool AppVal)
{
DataChange.UpdateStatusFromAdmin(LvAppId, AppVal);
TempData["AlertMessage"] = "Your Action Has Been Processed";
return RedirectToAction("Index");
}
并将数据库列更新为&#34;已批准&#34;或&#34;拒绝&#34;。
public static void UpdateStatusFromAdmin( string LvAppId, bool AppVal)
{
if (AppVal == true)
{
db.Database.ExecuteSqlCommand("UPDATE LeaveApps SET Status='Approved' WHERE LvAppId={0}", LvAppId);
}
else
{
db.Database.ExecuteSqlCommand("UPDATE LeaveApps SET Status='Rejected' WHERE LvAppId={0}", LvAppId);
}
}
数据库已更新(使用ssms检查),但是当我重新加载页面时,值仍未更新,我必须在visual studio中重新启动调试以使其更新,我该怎么办?感谢
答案 0 :(得分:1)
如果您确信查询是正确的,并且您可以看到使用ssms对后端进行的更改,但更改未反映在您的应用中..我认为这是一个很好的迹象表明存在上下文存在问题。
从您的代码中看起来您似乎没有正确处理上下文。
将数据访问权限包含在using语句中,如下所示:
using(var db = new DatabaseContext())
{
// perform data access here
}
会自动处理它......
请参阅https://msdn.microsoft.com/en-gb/data/jj729737.aspx
如果这不能解决您的问题,我会专注于您的查询
答案 1 :(得分:0)
除了将值写入数据库之外,您不会对它们执行任何操作。
创建模型的对象并调用您的视图。
var model = new YourModel
{
LvAppId = lvAppId,
AppVal = appVal
};
return View("Index", model);
否则,您必须调用数据库以获取最新值