我在MVC应用程序的页脚上有“联系我们”链接。
在呼叫页面上包含提交反馈的表单..
当有效表单提交时,我想重定向到调用该联系我们链接的页面。
如何保持这种私密的联系。我不能利用历史,因为它包含验证,如果表格失败则显示错误,并在提交有效表格后,私密历史是相同的,即联系我们表格。
我应该使用session存储私密表单url还是有其他方法来执行此操作?
答案 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);
}