我想在我的控制器上使用Request.UrlReferrer.PathAndQuery
方法作为return Redirect(Request.UrlReferrer.PathAndQuery);
,但它总是获取当前页面的URL,我猜我的登录页面在控制器中名为AccountController,所以这个方法没有出来的控制器。因为当我尝试在_Layout
上使用@Request.UrlReferrer.PathAndQuery
时,它运行良好。你知道解决方案吗?Request.UrlReferrer不能在控制器上工作页面
0
A
回答
0
据我了解,你从你要什么Action2
,在其上进行了一些工作,但与HttpPostAttribute
发布到Action2
Action1
,想回去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);
}
而在客户端:
措施1视图:
...
@Html.ActionLink("text", "Action2", new { backUrl = Url.Action("Action1") })
...
措施2的视图(a形式内侧):
...
<input name='backUrl' type='hidden' value='@ViewBag.ReturnUrl' />
...
而一切都应该工作。
+0
虽然这在技术上是正确的,但您应该将返回值封装在检查'Url.IsLocalUrl(backUrl)'的条件中。这样可以防止恶意第三方在您的网站上发布类似登录表单的内容并通过返回URL将安全漏洞重定向到其恶意网站。允许他们对用户执行钓鱼攻击。 –
相关问题
- 1. Jquery在控制台上工作,但不在页面上
- 2. JavaScript片段在控制台上工作,但不在页面上
- 3. JavaScript在控制台中工作,但不在我的页面上
- 4. 单页控制器不工作
- 5. jquery不能在内容页面的服务器控件上工作
- 6. 角JS控制器功能不工作
- 7. 控制器rspec不能正常工作
- 8. Laravel控制器不能在另一台电脑上工作
- 9. Mutilple控制器在一个页面上
- 10. Silverstripe:页面控制器重定向返回不工作
- 11. CakePHP的$这个 - >页面中设置控制器()不工作
- 12. AngularJS控制器的工作原理,但不加载HTML页面
- 13. chartjs不工作的PHP页面,但在HTML页面上工作
- 14. 控制台不能工作
- 15. 链接在一个页面上不能在col-xs上工作
- 16. Javascript不能在页面上工作,但主页
- 17. jQuery Colorbox在其他页面上工作,但不能在我的index.html上工作
- 18. backbone.js控制器不工作
- 19. Plnkr控制器不工作
- 20. sortable.js不能在JSP页面工作
- 21. JQuery validationEngine不能在WordPress页面工作
- 22. jquery不能在cshtml页面工作
- 23. jQuery datepicker不能在ASP.NET页面工作
- 24. ngroute工作但控制器不工作
- 25. 代表工作在控制器A但不在控制器B
- 26. jQuery不能在页面上使用AJAX控件在Safari/Chrome中工作
- 27. menuclick在主页面中的用户控件不能从内容页面工作
- 28. 搜索栏不能在不同的页面标签上工作
- 29. ng-click不能在不同的页面上工作
- 30. PHP可以在页面上工作,但不能在同一网站的其他页面上工作
你是否试图用'HttpPostAttribute'在方法内调用它? –
请包含您的源代码。还请详细说明它返回的价值,以及您期望**返回的价值。 – mjwills
@MikhailNeofitov Yeap,我试图在[HttpPost]中调用它 –