我们有一个显示数据行的索引页面。当我们去编辑一行时,会点击Edit ActionResult并显示我们要编辑的数据。然后当我们去提交更改时,HttpPost ActionResult被命中并保存数据。
我们可以返回到索引页面并查看保存的更改,但如果我们再次尝试编辑数据,则不会触发编辑ActionResult,我们会看到旧数据,直到我们点击F5然后触发编辑ActionResult和数据被刷新。
我们怎样才能确保每次都能点击Edit ActionResult而不必进行硬刷新?
谢谢!
这是控制器上的编辑ActionResult:
[CustomAuthorizePDG]
public ActionResult Edit(int id = 0)
{
var model = this._db.ProductApprovals_ProductApproval.Find(id);
if (model == null) {
return HttpNotFound();
}
var spServer = ConfigurationManager.ConnectionStrings["SPServer"].ConnectionString;
ViewBag.ProductStatusId = new SelectList(this._db.ProductApprovals_ProductStatus, "ProductStatusId", "ProductStatus", model.ProductStatusId);
return View(model);
}
然后是HttpPost AtionResult:
[CustomAuthorizePDG]
[HttpPost]
[ValidateAntiForgeryToken]
[ErrorHandler]
public ActionResult Edit(ProductApprovals_ProductApproval model, HttpPostedFileBase file)
{
if (ModelState.IsValid) {
if (file != null && file.ContentLength > 0) {
var sp = new ProductApprovalDataContext(new Uri("http://sp-appcentral-int/ProductApproval/_vti_bin/ListData.svc"))
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
var productApprovalForm = sp.ProductApprovalForm.Where(x => x.ProductApprovalId == model.ProductApprovalId.ToString(CultureInfo.InvariantCulture)).FirstOrDefault();
if (productApprovalForm != null) {
var fileName = Path.GetFileName(file.FileName);
var extension = Path.GetExtension(file.FileName);
var name = string.Format("{0}{1}", model.ProductApprovalId, extension);
var path = string.Format("/ProductApproval/Product Approval Form/{0}", name);
var contentType = extension == "docx" ? "application/vnd.openxmlformats-officedocument.wordprocessingml.document" : "application/msword";
productApprovalForm.CheckedOutTo = new UserInformationListItem
{
UserName = User.Identity.Name
};
productApprovalForm.Title = fileName;
sp.SetSaveStream(productApprovalForm, file.InputStream, false, contentType, path);
sp.SaveChanges(SaveChangesOptions.ReplaceOnUpdate);
this.UpdateProductApprovalWithDocument(model, path, fileName);
}
}
this._db.Entry(model).State = EntityState.Modified;
this._db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ProductStatusId = new SelectList(this._db.ProductApprovals_ProductStatus, "ProductStatusId", "ProductStatus", model.ProductStatusId);
return View(model);
}
因此,当触发HttpPost Edit时,它会成功保存更改,并在索引视图中显示。如果您随后返回Edit ActionResult,则会显示初始值,直到您执行刷新。我们在代码上设置了一个断点,第二次编辑ActionResult直到你点击F5才被触发......
答案 0 :(得分:0)
在您的HttpPost编辑操作中,确保您正在将RedirectToAction返回到Index操作。如果要显示“编辑”操作中的“保存编辑”视图,则表示您的问题描述。您将需要重定向回“索引”操作。
如果仍然不起作用,请检查索引视图的HTML源代码,以确保您的编辑网址仍然指的是编辑操作方法。