Post方法后用RedirectToAction重定向时如何在URL中传递#text
在Post方法中用RedirectToAction添加URL锚点的解决方案
这个问题我之前也碰到过,默认的RedirectToAction方法本身并不直接支持传递URL锚点(就是#后面的部分),不过有两个简单可行的办法能实现你想要的效果:
方法一:拼接URL后使用Redirect跳转
核心思路是先让框架帮我们生成正确的路由URL,再手动拼接上锚点,最后用Redirect方法完成重定向。代码示例如下:
public ActionResult YourPostAction() { // 生成基础的路由URL(对应testController/testAction/15) var baseUrl = Url.Action("testAction", "testController", new { id = 15 }); // 手动拼接锚点部分 var targetUrl = $"{baseUrl}#test"; // 执行重定向 return Redirect(targetUrl); }
这里要注意:锚点(#test)是客户端浏览器处理的内容,不会被发送到服务器,所以我们只需要在生成的URL末尾直接拼接即可,服务器不需要额外处理这部分逻辑。
方法二:ASP.NET Core下的另一种写法(可选)
如果你的项目是ASP.NET Core,也可以通过Url.RouteUrl来生成基础URL再拼接锚点,代码逻辑和上面一致,写法稍微不同:
public IActionResult YourPostAction() { var routeParams = new RouteValueDictionary { { "action", "testAction" }, { "controller", "testController" }, { "id", 15 } }; // 生成基础路由URL var baseUrl = Url.RouteUrl(routeParams); // 拼接锚点后重定向 return Redirect($"{baseUrl}#test"); }
这两种方法都能让你在Post方法执行后,重定向到www.test.com/testController/testAction/15#test这个目标URL。
内容的提问来源于stack exchange,提问作者Usman Tariq
相关产品推荐
相关产品推荐

