将页面提交到访问过的上一页

时间:2012-11-06 06:52:30

标签: c# asp.net-mvc validation session hyperlink

我在MVC应用程序的页脚上有“联系我们”链接。

在呼叫页面上包含提交反馈的表单..

当有效表单提交时,我想重定向到调用该联系我们链接的页面。

如何保持这种私密的联系。我不能利用历史,因为它包含验证,如果表格失败则显示错误,并在提交有效表格后,私密历史是相同的,即联系我们表格。

我应该使用session存储私密表单url还是有其他方法来执行此操作?

1 个答案:

答案 0 :(得分:1)

看一下ASP.NET MVC Internet Application模板中的Forms Authentication集成,它正好处理这种情况。

您可能希望将“联系我们”链接指向: -

/ContactUs?returnUrl={the current URL}

您可以构建如下: -

@Html.ActionLink(
  "Contact us", "Contact", "Home", new { returnUrl = Request.Url.PathAndQuery })

然后,您可以在操作方法参数服务器端捕获它。即使您在此期间遇到服务器端验证失败,该参数仍将在POST表单中存活。

[HttpPost]
public ActionResult ContactUs(ContactUsModel model, string returnUrl)
{
  if (ModelStat.IsValid)
  {
    // Do whatever you need to do with the ContactUsModel

    if (Url.IsLocalUrl(returnUrl)
    {
      return Redirect(returnUrl);
    }
    else
    {
      return RedirectToAction("Index", "Home");
    }
  }

  return View(model);
}