怎么在ASP。网络核心项目中实现一个重定向功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
使用RedirectResult
可以使用下面任何一个方法来返回RedirectResult。
- <李>
重定向返回Http状态码为302
李> <李>之间返回Http状态码为301
李> <李>RedirectPermanentPreserveMethod返回Http状态码为308
李> <李> RedirectPreserveMethod返回Http状态码为307
具体状态码代表什么意思,大家可查专业资料,下面的代码展示了如何使用这些方法。
重定向(“/Home/Index"); 之间(“/Home/Index"); RedirectPermanentPreserveMethod (“/Home/Index"); RedirectPreserveMethod (“/Home/Index");
如果你被这些方法搞蒙圈了,可以直接使用RedirectResult,然后通过永久和preserveMethod两个参数去调节返回什么样的Http状态码即可,代码如下所示:
public RedirectResult 指数() { ,return new  RedirectResult (url:,“/Home/Index",,永久的,,真的,,preserveMethod:, true); }
值得注意的是,重定向方法也可以将请求导向一个指定的url地址上,比如下面这样:
public RedirectResult 指数() { ,return 重定向(“https://google.com"); }
接下来简单了解一下继承关系:HomeController继承了控制器,后者又继承了ControllerBase并实现了IActionFilter, IFilterMetadata, IAsyncActionFilter,和IDisposable接口,如下代码所示:
public class HomeController :控制器 { } public abstract  class Controller :, ControllerBase,, IActionFilter,, IFilterMetadata,, IAsyncActionFilter, IDisposable { }
使用RedirectToActionResult
这个ActionResult用于将请求转向到指定的控制器。行动,如果没有指定控制器的话,自然就会跳转到当前控制器下的动作,可使用下面罗列的方法将请求跳转到指定的行动。
- <李>
RedirectToAction返回Http状态码为302
李> <李>RedirectToActionPermanent返回Http状态码为301
李> <李>RedirectToActionPermanentPreserveMethod返回Http状态码为308
李> <李> RedirectToActionPreserveMethod返回Http状态码为307
如果不想使用具体的方法,也可以直接使用父类的RedirectToAction方法。
public RedirectToActionResult 指数() { ,return RedirectToAction (actionName:“Index",, controllerName:,“Home"); }
如果你只需要跳转到当前控制器下的某一个动作,可以忽略控制器名字,如下代码所示:
public RedirectToActionResult 指数() { ,return RedirectToAction (actionName:“Privacy"); }
使用RedirectToRouteResult
这是另一种可将请求跳转到指定行动的方式,你可以使用下面罗列的方法来实现跳转。
- <李>
RedirectToRoute返回Http状态码为302
李> <李>RedirectToRoutePermanent返回Http状态码为301
李> <李>RedirectToRoutePermanentPreserveMethod返回Http状态码为308
李> <李> RedirectToRoutePreserveMethod返回Http状态码为307
下面的代码片段展示了如何使用RedirectToRoute。
public RedirectToRouteResult 指数() { ,return RedirectToRoute (“author"); }
也可以通过RouteValueDictionary来指定需要跳转的路线值,如下代码所示:
var routeValue =, new RouteValueDictionary (new {, action =,“调整前,,controller =,“Author"}); return RedirectToRoute (routeValue);
使用LocalRedirectResult
这个ActionResult只用于跳转到本地url,也就意味着一旦你跳转到外部网站的url,肯定会抛出异常的。可以使用下面罗列的方法来实现跳转。
- <李>
LocalRedirect返回Http状态码为302
李> <李>LocalRedirectPermanent返回Http状态码为301
李> <李>LocalRedirectPermanentPreserveMethod返回Http状态码为308