我正在研究一些遗留代码。 我有一个表单,我编辑一些数据,当我点击保存,如果成功,我想返回到以前的表格。 所以我的控制器方法是;
.sketch
并且previousUrl的传入值为
public ActionResult Edit(int callDiaryId)
{
ViewBag.PreviousUrl = System.Web.HttpContext.Current.Request.UrlReferrer;
var callDiary = this.SCDCallDiaryRepository.Get(callDiaryId);
return this.View("Edit", new DiaryItemViewModel(callDiary));
}
[HttpPost]
[ValidateAntiForgeryToken]
[ValidateOnlyIncomingValuesAttribute]
public ActionResult Edit(DiaryItemViewModel item, string previousUrl)
{
var callDiary = this.SCDCallDiaryRepository.Get(item.SCD_CallDiaryId);
callDiary.Comments = item.Comments;
callDiary.ContractId = item.ContractId;
var opStatus = this.SCDCallDiaryRepository.Update(callDiary);
if (opStatus.Status)
{
this.TempData["SuccessMessage"] = "Details updated successfully.".MessageTime();
return RedirectToAction(previousUrl);
}
this.TempData["ErrorMessage"] = "Details NOT updated.".MessageTime();
ViewBag.PreviousUrl = previousUrl;
return this.View(new DiaryItemViewModel(callDiary));
}
这适用于我的后退按钮。 但是在执行我的RedirectToAction命令后,我得到的错误请求错误是因为它显示的Url是;
http://localhost:58384/LogDiary/Comments?companyId=11033
我该如何解决这个问题?
答案 0 :(得分:1)
我能够在我的应用程序的控制器中执行此操作,以将用户返回到上一页
public ActionResult ChangePassword()
{
var userId = this.User.Identity.GetUserId();
var viewModel = this._userService.ChangePasswordViewModelForUser(userId);
viewModel.PreviousPage = this.Request.UrlReferrer.AbsoluteUri;
return this.View(viewModel);
}
如果我需要在按钮中使用它
<a href="@HttpContext.Current.Request.UrlReferrer" class="btn btn-primary">@Resource.Button_Cancel</a>
答案 1 :(得分:0)
我想我找到了答案。 我没有使用RedirectToAction,而是使用Redirect。
答案 2 :(得分:0)
您可以通过执行以下代码
返回上一个表单var a = [];
for(var i = 0; i < 1000000; i++) {
a.push('myname ' + i);
}
它将返回 [HttpPost]
[ValidateAntiForgeryToken]
[ValidateOnlyIncomingValuesAttribute]
public ActionResult Edit(DiaryItemViewModel item)
{
..your other code..
return View(item);
}
页面以及输入的数据
希望这有帮助