怎么在ASP.NET Core項(xiàng)目中實(shí)現(xiàn)一個(gè)重定向功能?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今,先為涇川等服務(wù)建站,涇川等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為涇川企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。可以使用下面任何一個(gè)方法來(lái)返回 RedirectResult。
Redirect 返回 Http 狀態(tài)碼為 302
RedirectPermanent 返回 Http 狀態(tài)碼為 301
RedirectPermanentPreserveMethod 返回 Http 狀態(tài)碼為 308
RedirectPreserveMethod 返回 Http 狀態(tài)碼為 307
具體狀態(tài)碼代表什么意思,大家可查專業(yè)資料,下面的代碼展示了如何使用這些方法。
Redirect("/Home/Index"); RedirectPermanent("/Home/Index"); RedirectPermanentPreserveMethod("/Home/Index"); RedirectPreserveMethod("/Home/Index");
如果你被這些方法搞蒙圈了,可以直接使用 RedirectResult ,然后通過(guò) permanent 和 preserveMethod 兩個(gè)參數(shù)去調(diào)節(jié)返回什么樣的 Http 狀態(tài)碼即可, 代碼如下所示:
public RedirectResult Index() { return new RedirectResult(url: "/Home/Index", permanent: true, preserveMethod: true); }
值得注意的是,Redirect 方法也可以將請(qǐng)求導(dǎo)向一個(gè)指定的url地址上,比如下面這樣:
public RedirectResult Index() { return Redirect("https://google.com"); }
接下來(lái)簡(jiǎn)單了解一下繼承關(guān)系: HomeController 繼承了 Controller ,后者又繼承了 ControllerBase 并實(shí)現(xiàn)了 IActionFilter, IFilterMetadata, IAsyncActionFilter, 和 IDisposable 接口,如下代碼所示:
public class HomeController : Controller { } public abstract class Controller : ControllerBase, IActionFilter, IFilterMetadata, IAsyncActionFilter, IDisposable { }
這個(gè) ActionResult 用于將請(qǐng)求轉(zhuǎn)向到指定的 Controller.Action ,如果沒(méi)有指定 Controller 的話,自然就會(huì)跳轉(zhuǎn)到當(dāng)前 Controller 下的 Action,可使用下面羅列的方法將請(qǐng)求跳轉(zhuǎn)到指定的 Action。
RedirectToAction 返回 Http 狀態(tài)碼為 302
RedirectToActionPermanent 返回 Http 狀態(tài)碼為 301
RedirectToActionPermanentPreserveMethod 返回 Http 狀態(tài)碼為 308
RedirectToActionPreserveMethod 返回 Http 狀態(tài)碼為 307
如果不想使用具體的方法,也可以直接使用父類的 RedirectToAction 方法。
public RedirectToActionResult Index() { return RedirectToAction(actionName: "Index", controllerName: "Home"); }
如果你只需要跳轉(zhuǎn)到當(dāng)前 Controller 下的某一個(gè) Action,可以忽略 Controller 名字,如下代碼所示:
public RedirectToActionResult Index() { return RedirectToAction(actionName: "Privacy"); }
這是另一種可將 請(qǐng)求跳轉(zhuǎn)到指定 Action 的方式,你可以使用下面羅列的方法來(lái)實(shí)現(xiàn)跳轉(zhuǎn)。
RedirectToRoute 返回 Http 狀態(tài)碼為 302
RedirectToRoutePermanent 返回 Http 狀態(tài)碼為 301
RedirectToRoutePermanentPreserveMethod 返回 Http 狀態(tài)碼為 308
RedirectToRoutePreserveMethod 返回 Http 狀態(tài)碼為 307
下面的代碼片段展示了 如何使用 RedirectToRoute 。
public RedirectToRouteResult Index() { return RedirectToRoute("author"); }
也可以通過(guò) RouteValueDictionary 來(lái)指定需要跳轉(zhuǎn)的 Route 值,如下代碼所示:
var routeValue = new RouteValueDictionary(new { action = "View", controller = "Author"}); return RedirectToRoute(routeValue);
這個(gè) ActionResult 只用于跳轉(zhuǎn)到本地url ,也就意味著一旦你跳轉(zhuǎn)到外部網(wǎng)站的url,肯定會(huì)拋出異常的。可以使用下面羅列的方法來(lái)實(shí)現(xiàn)跳轉(zhuǎn)。
LocalRedirect 返回 Http 狀態(tài)碼為 302
LocalRedirectPermanent 返回 Http 狀態(tài)碼為 301
LocalRedirectPermanentPreserveMethod 返回 Http 狀態(tài)碼為 308
LocalRedirectPreserveMethod 返回 Http 狀態(tài)碼為 307
最后需要了解的一點(diǎn)是,你可以使用 RedirectToPage 方法將請(qǐng)求跳轉(zhuǎn)到指定的 Razor 頁(yè)面,返回 Http狀態(tài)碼 302,比如說(shuō):你有一個(gè) Author Page,接下來(lái)用如下代碼實(shí)現(xiàn)跳轉(zhuǎn)。
public IActionResult RedirectToAuthorPage() { return RedirectToPage("Author"); }
關(guān)于怎么在ASP.NET Core項(xiàng)目中實(shí)現(xiàn)一個(gè)重定向功能問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。