MVC,无法返回上一个URL

时间:2016-02-19 10:15:43

标签: asp.net-mvc

我正在研究一些遗留代码。 我有一个表单,我编辑一些数据,当我点击保存,如果成功,我想返回到以前的表格。 所以我的控制器方法是;

.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

我该如何解决这个问题?

3 个答案:

答案 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); } 页面以及输入的数据
希望这有帮助