怎么在ASP.NET Core项目中实现一个重定向功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
可以使用下面任何一个方法来返回 RedirectResult。
Redirect 返回 Http 状态码为 302
RedirectPermanent 返回 Http 状态码为 301
RedirectPermanentPreserveMethod 返回 Http 状态码为 308
RedirectPreserveMethod 返回 Http 状态码为 307
具体状态码代表什么意思,大家可查专业资料,下面的代码展示了如何使用这些方法。
Redirect("/Home/Index"); RedirectPermanent("/Home/Index"); RedirectPermanentPreserveMethod("/Home/Index"); RedirectPreserveMethod("/Home/Index");
如果你被这些方法搞蒙圈了,可以直接使用 RedirectResult ,然后通过 permanent 和 preserveMethod 两个参数去调节返回什么样的 Http 状态码即可, 代码如下所示:
public RedirectResult Index() { return new RedirectResult(url: "/Home/Index", permanent: true, preserveMethod: true); }
值得注意的是,Redirect 方法也可以将请求导向一个指定的url地址上,比如下面这样:
public RedirectResult Index() { return Redirect("https://google.com"); }
接下来简单了解一下继承关系: HomeController 继承了 Controller ,后者又继承了 ControllerBase 并实现了 IActionFilter, IFilterMetadata, IAsyncActionFilter, 和 IDisposable 接口,如下代码所示:
public class HomeController : Controller { } public abstract class Controller : ControllerBase, IActionFilter, IFilterMetadata, IAsyncActionFilter, IDisposable { }
这个 ActionResult 用于将请求转向到指定的 Controller.Action ,如果没有指定 Controller 的话,自然就会跳转到当前 Controller 下的 Action,可使用下面罗列的方法将请求跳转到指定的 Action。
RedirectToAction 返回 Http 状态码为 302
RedirectToActionPermanent 返回 Http 状态码为 301
RedirectToActionPermanentPreserveMethod 返回 Http 状态码为 308
RedirectToActionPreserveMethod 返回 Http 状态码为 307
如果不想使用具体的方法,也可以直接使用父类的 RedirectToAction 方法。
public RedirectToActionResult Index() { return RedirectToAction(actionName: "Index", controllerName: "Home"); }
如果你只需要跳转到当前 Controller 下的某一个 Action,可以忽略 Controller 名字,如下代码所示:
public RedirectToActionResult Index() { return RedirectToAction(actionName: "Privacy"); }
这是另一种可将 请求跳转到指定 Action 的方式,你可以使用下面罗列的方法来实现跳转。
RedirectToRoute 返回 Http 状态码为 302
RedirectToRoutePermanent 返回 Http 状态码为 301
RedirectToRoutePermanentPreserveMethod 返回 Http 状态码为 308
RedirectToRoutePreserveMethod 返回 Http 状态码为 307
下面的代码片段展示了 如何使用 RedirectToRoute 。
public RedirectToRouteResult Index() { return RedirectToRoute("author"); }
也可以通过 RouteValueDictionary 来指定需要跳转的 Route 值,如下代码所示:
var routeValue = new RouteValueDictionary(new { action = "View", controller = "Author"}); return RedirectToRoute(routeValue);
这个 ActionResult 只用于跳转到本地url ,也就意味着一旦你跳转到外部网站的url,肯定会抛出异常的。可以使用下面罗列的方法来实现跳转。
LocalRedirect 返回 Http 状态码为 302
LocalRedirectPermanent 返回 Http 状态码为 301
LocalRedirectPermanentPreserveMethod 返回 Http 状态码为 308
LocalRedirectPreserveMethod 返回 Http 状态码为 307
最后需要了解的一点是,你可以使用 RedirectToPage 方法将请求跳转到指定的 Razor 页面,返回 Http状态码 302,比如说:你有一个 Author Page,接下来用如下代码实现跳转。
public IActionResult RedirectToAuthorPage() { return RedirectToPage("Author"); }
关于怎么在ASP.NET Core项目中实现一个重定向功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。