我想在我的控制器上使用Request.UrlReferrer.PathAndQuery
方法作为return Redirect(Request.UrlReferrer.PathAndQuery);
,但它总是获取当前页面的URL,我想我的登录页面位于一个名为AccountController的控制器中,所以这个方法没有离开那个控制器。因为当我尝试在@Request.UrlReferrer.PathAndQuery
上使用_Layout
时,它运作良好。你知道解决方案吗?
答案 0 :(得分:0)
据我了解,您有Action1
来自Action2
,对其进行了一些处理,并将其Action2
张贴到HttpPostAttribute
并希望回到Action1
。一切都在同步,没有AJAX。
您不应使用Request.UrlReferrer
,因为它不提供所需的值。它包含的网页地址,来自Action2
HttpPost
Action2
,显示[HttpGet]
[HttpGet]
或没有属性(类似于RedirectToAction
) 。
如果用户应永久重定向到所需页面,那么第一种方法是使用控制器的return RedirectToAction("Action1", "YourControllerName");
方法:
public ActionResult Action2(string backUrl)
{
if (string.IsNullOrEmpty(backUrl))
{
throw new ArgumentNullException("backUrl");
}
ViewBag.ReturnUrl = backUrl;
//your work
return View();
}
[HttpPost]
public ActionResult Action2(YourModel model, string backUrl)
{
//your work
return Redirect(backUrl);
}
另一种方法是存储url以重定向客户端上的隐藏输入。需要修改控制器代码:
...
@Html.ActionLink("text", "Action2", new { backUrl = Url.Action("Action1") })
...
在客户端:
Action1视图:
...
<input name='backUrl' type='hidden' value='@ViewBag.ReturnUrl' />
...
Action2视图(在表单内):
root: './'
一切都应该有效。