【发布时间】:2019-01-23 21:14:22
【问题描述】:
所以,我有一个按钮可以触发一个 javascript 函数,它调用一个 AJAX 请求,调用一个应该更新我的数据库的 actionresult。
Javascript 调用
function changeDepartment() {
// Initiate and value variables,
var id = $('#requestId').val();
var user = $('#contactUser').val();
// Bind variables to data object
var data = { id: id }
// Ajax call with data.
$.ajax({
url: '@Url.Action("changeDepartmentActionResult", "ManageRequestResearch")',
type: "POST",
dataType: 'json',
data: data,
success: function (data, textStatus, XmlHttpRequest) {
var name = data.name;
window.location.href = '@Url.Action("Index", "ManageRequestResearch")';
$('#btn-input').val('');
},
error: function (jqXHR, textStatus, errorThrown) {
alert("responseText: " + jqXHR.responseText);
}
});
alert(data);
然后,我得到了动作结果:
[HttpPost]
public ActionResult changeDepartmentActionResult(string id)
{
var moadEntities = new MOADEntities();
moadEntities.Configuration.AutoDetectChangesEnabled = false;
var researchBusiness = new ResearchRequestBusiness(moadEntities);
var request = researchBusiness.FetchRequestById(Convert.ToInt32(id));
var directoryObject = GetActiveDirectoryObject(request.Requestor);
var requstorDisplayName = directoryObject != null ? directoryObject.DisplayName : request.RequestorFullName;
var researchRequestFileBusiness = new ResearchRequestFilesBusiness(moadEntities);
var requestFiles = researchRequestFileBusiness.FetchFilesByRequestId(Convert.ToInt32(id));
var viewModel = new ManageSelectedRequestResearchViewModel()
{
RequestDetails = request,
RequestActivity = request.tbl_ResearchRequestActivity.Select(d => d).ToList(),
Files = requestFiles
};
moadEntities.Configuration.AutoDetectChangesEnabled = false;
if (request.GovernmentEnrollment == true)
{
request.GovernmentEnrollment = false;
request.ManagedCare = true;
moadEntities.SaveChanges();
}
else
{
request.ManagedCare = false;
request.GovernmentEnrollment = true;
moadEntities.SaveChanges();
}
return Json("Status changed successfully", JsonRequestBehavior.AllowGet);
}
据我观察,它返回了正确的记录,正确地进行了更改,并点击了 Context.SaveChanges(); 调试时——我可以在保存更改之前看到值确实发生了变化,但是——在数据库内部,没有保存任何更改。
另外,我检查了连接字符串是否有效。
知道是什么原因造成的吗? 提前谢谢!
【问题讨论】:
-
1. “我可以在保存更改之前看到值确实发生了变化”你在哪里看到这个? 2. 在您的 changeDepartmentActionResult(string id) 方法中,您似乎没有应用任何要保存的新值?
-
为什么你禁用 AutoDetectChanges 两次,然后再也不启用它?在异常情况下会发生什么?另外,上下文实例会发生什么?
标签: javascript c# asp.net ajax entity-framework