כיצד להפנות מחדש בקשה ב- ASP.NET Core MVC

ASP.NET Core היא מסגרת חוצה פלטפורמות, קוד פתוח, רזה, מהיר ומודולרי לבניית יישומי אינטרנט בעלי ביצועים גבוהים. יישומי ASP.NET Core MVC מאפשרים לך להפנות מחדש בקשה לכתובת אתר מוגדרת בכמה דרכים שונות. מאמר זה מדבר כיצד נוכל להשיג זאת בעזרת דוגמאות קוד בכל מקום שמתאים.

כדי לעבוד עם דוגמאות הקוד המופיעות במאמר זה, עליך להתקין במערכת Visual Studio 2019 שלך. אם עדיין אין לך עותק, תוכל להוריד את Visual Studio 2019 כאן. 

[גם בנושא: כיצד לשחזר את האובייקטים של אלוהים ב- C #]

צור פרוייקט ASP.NET Core MVC ב- Visual Studio

ראשית, בואו ניצור פרוייקט ASP.NET Core ב- Visual Studio 2019. בהנחה ש- Visual Studio 2019 מותקן במערכת שלכם, עקבו אחר השלבים המתוארים להלן כדי ליצור פרויקט ASP.NET Core חדש ב- Visual Studio.

  1. הפעל את Visual Studio IDE.
  2. לחץ על "צור פרויקט חדש".
  3. בחלון "צור פרויקט חדש" בחר "ASP.NET יישום אינטרנט ליבה" מרשימת התבניות המוצגות.
  4. הקש "הבא.
  5. בחלון "הגדר את הפרויקט החדש שלך", ציין את השם והמיקום של הפרויקט החדש.
  6. סמן אופציונלי את תיבת הסימון "הצב פתרון ופרויקט באותה ספרייה", בהתאם להעדפותיך.
  7. לחץ על צור.
  8. בחלון "צור יישום אינטרנט חדש של ASP.NET Core" שמוצג הבא, בחר .NET Core בתור זמן הריצה ו- ASP.NET Core 3.1 (או מאוחר יותר) מהרשימה הנפתחת בחלק העליון.
  9. בחר "יישום אינטרנט (Model-View-Controller)" כתבנית הפרויקט ליצירת יישום MVC Core חדש של ASP.NET. 
  10. ודא שתיבות הסימון "אפשר תמיכה ב- Docker" ו- "הגדר עבור HTTPS" אינן מסומנות מכיוון שלא נשתמש בתכונות אלה כאן.
  11. ודא שהאימות מוגדר כ"לא אימות "מכיוון שלא נשתמש גם באימות.
  12. לחץ על צור.

בעקבות השלבים הבאים ייצור פרוייקט MVC Core חדש של ASP.NET ב- Visual Studio 2019. נשתמש בפרויקט זה בסעיפים שלמטה כדי להמחיש כיצד נוכל להפנות מחדש בקשות בעבודה עם שיטות פעולה ב- ASP.NET Core 3.1.

תוצאות פעולה להפניה מחדש ב- ASP.NET Core MVC

ישנם מספר סוגים של תוצאות פעולה ב- ASP.NET Core MVC כגון RedirectResult, RedirectToActionResult, RedirectToRouteResult ו- LocalRedirectResult. כל המחלקות הללו מרחיבות את מחלקת ActionResult ואת הממשקים IActionResult ו- IKeepTempDataResult ומחזירות נמצאו (Http Status Code 302), הועברו לצמיתות (Http Status Status 301), הפניה זמנית (Http Status Status 307) או הפניה קבועה (Http Status Status 308 ).

נבחן כיצד אנו יכולים לעבוד עם כל אחד מהם בסעיף זה.

השתמש ב- RedirectResult ב- ASP.NET Core MVC

באפשרותך להשתמש באחת מהשיטות הבאות להחזרת RedirectResult:

  • הפניה מחדש - קוד סטטוס 302 של Http נמצא (הועבר זמנית לכתובת האתר שסופקה בכותרת המיקום)
  • RedirectPermanent - קוד מצב Http 301 הועבר לצמיתות
  • RedirectPermanentPreserveMethod - Http קוד קוד 308 הפניה קבועה
  • RedirectPreserveMethod - קוד מצב Http 307 הפניה זמנית

שורות הקוד הבאות מראות כיצד ניתן להשתמש בכל אחת משיטות אלה.

הפניה מחדש ("/ מחבר / אינדקס");
RedirectPermanent ("/ מחבר / אינדקס");
RedirectPermanentPreserveMethod ("/ מחבר / אינדקס");
RedirectPreserveMethod ("/ מחבר / אינדקס");

לחלופין, אתה יכול להחזיר מופע של RedirectResult כפי שמוצג בקטע הקוד המופיע למטה.

אינדקס ציבורי RedirectResult ()

{

   להחזיר RedirectResult חדש (url: "/ Author / Index", קבוע: true,

                             preserveMethod: נכון);

}

שים לב כי ניתן להשתמש בשיטת Redirect להפניית בקשה לכתובת אתר שצוינה. שיטה זו זמינה במחלקת הבסיס המופשטת הנקראת ControllerBase.

אינדקס ציבורי RedirectResult ()

{

  החזר הפניה מחדש ("// google.com");

}

יש לציין כי הבקרים שאתה יוצר ב- ASP.NET Core MVC מרחיבים את מחלקת הבקר. מחלקה זו בתורו מרחיבה את מחלקת ControllerBase ומיישמת את ממשקי IActionFilter, IFilterMetadata, IAsyncActionFilter ו- IDisposable.

השתמש ב- RedirectToActionResult ב- ASP.NET Core MVC

ניתן להשתמש בתוצאת פעולה זו להפניה לפעולה ולבקר שצוינו. אם לא צוין שום בקר הוא מפנה לפעולה שצוינה בתוך הבקר הנוכחי. באפשרותך להשתמש בכל אחת מהשיטות הבאות להפנות מחדש לפעולה שצוינה ולהחזיר מופע של RedirectToActionResult משיטת הפעולה שלך.

  • RedirectToAction - קוד סטטוס Http 302 נמצא (הועבר באופן זמני לכתובת האתר שסופקה בכותרת המיקום)
  • RedirectToActionPermanent - קוד מצב Http 301 הועבר לצמיתות
  • RedirectToActionPermanentPreserveMethod - קוד מצב Http 308 הפניה קבועה
  • RedirectToActionPreserveMethod - Http קוד מצב 307 הפניה זמנית

קטע הקוד הבא ממחיש כיצד ניתן להשתמש בשיטת RedirectToAction.

אינדקס RedirectToActionResult ציבורי ()

{

    להחזיר RedirectToAction (actionName: "Index", controllerName: "Author");

}

אתה יכול לדלג על שם הבקר אם ברצונך להפנות את הבקשה לשיטת פעולה בבקר הנוכחי. קטע הקוד הבא מראה כיצד ניתן להשיג זאת.

אינדקס RedirectToActionResult ציבורי ()

{

   להחזיר RedirectToAction (actionName: "Privacy");

}

השתמש ב- RedirectToRouteResult ב- MPC Core ASP.NET

זוהי תוצאת פעולה נוספת שיכולה לשמש להפניית הבקשה למסלול שצוין. אתה יכול להשתמש בכל אחת מהשיטות הבאות כדי להחזיר מופע של RedirectToRouteResult משיטת הפעולה שלך.

  • RedirectToRoute - קוד מצב 302 של Http נמצא (הועבר זמנית לכתובת האתר שסופקה בכותרת המיקום)
  • RedirectToRoutePermanent - קוד מצב Http 301 הועבר לצמיתות
  • RedirectToRoutePermanentPreserveMethod - קוד מצב Http 308 הפניה קבועה
  • RedirectToRoutePreserveMethod - Http קוד מצב 307 הפניה זמנית

קטע הקוד הבא מראה כיצד ניתן להשתמש בשיטת RedirectToRoute.

אינדקס RedirectToRouteResult ציבורי ()

{

    להחזיר RedirectToRoute ("מחבר");

}

תוכל גם לציין את ערך המסלול בעת הפניה מחדש, כפי שמוצג בקטע הקוד המופיע למטה.

var routeValue = RouteValueDictionary חדש

 ({action = "View", בקר = "מחבר"} חדש);

להחזיר RedirectToRoute (routeValue);

השתמש ב- LocalRedirectResult ב- ASP.NET Core MVC

תוצאת פעולה זו משמשת כאשר ברצונך להפנות מחדש לכתובת אתר מקומית. זה זורק InvalidOperationException אם אתה משתמש איתו בכתובת אתר חיצונית. תוכל להשתמש בכל אחת מהשיטות הבאות כדי להחזיר מופע של LocalRedirectResult משיטת הפעולה שלך.

  • LocalRedirect - קוד סטטוס 302 של Http נמצא (הועבר זמנית לכתובת האתר שסופקה בכותרת המיקום)
  • LocalRedirectPermanent - קוד מצב Http 301 הועבר לצמיתות
  • LocalRedirectPermanentPreserveMethod - קוד מצב Http 308 הפניה קבועה
  • LocalRedirectPreserveMethod - קוד סטטוס Http 307 הפניה זמנית

הפנה לדפי גילוח ב- ASP.NET Core MVC

לסיום, שים לב שאתה יכול אפילו להפנות לדפי גילוח בשיטת RedirectToPage, ולציין את דף הגילוח היעד שאליו תפנה הבקשה. שיטת RedirectToPage מחזירה מופע RedirectToPageResult יחד עם קוד מצב HTTP 302.

אם יש לך דף בשם מחבר, שבו ברצונך להפנות את הבקשה, תוכל להשתמש בקטע הקוד הבא.

Public IActionResult RedirectToAuthorPage ()

{

    להחזיר RedirectToPage ("מחבר");

}

כיצד לעשות יותר בליבת ASP.NET:

  • כיצד להשתמש בניתוב תכונות ב- ASP.NET Core
  • כיצד להעביר פרמטרים לשיטות פעולה ב- ASP.NET Core MVC
  • כיצד להשתמש במנתחי API בליבת ASP.NET
  • כיצד להשתמש באסימוני נתיבי נתיב בליבת ASP.NET
  • כיצד להשתמש בגרסאות API ב- Core ASP.NET
  • כיצד להשתמש באובייקטים של העברת נתונים ב- ASP.NET Core 3.1
  • כיצד לטפל ב 404 שגיאות ב- ASP.NET Core MVC
  • כיצד להשתמש בהזרקת תלות במסנני פעולה ב- ASP.NET Core 3.1
  • כיצד להשתמש בתבנית האפשרויות ב- ASP.NET Core
  • כיצד להשתמש בניתוב נקודות קצה ב- ASP.NET Core 3.0 MVC
  • כיצד לייצא נתונים ל- Excel ב- ASP.NET Core 3.0
  • כיצד להשתמש ב- LoggerMessage ב- ASP.NET Core 3.0
  • כיצד לשלוח מיילים ב- ASP.NET Core
  • כיצד לתעד נתונים לשרת SQL ב- ASP.NET Core
  • כיצד לתזמן עבודות באמצעות Quartz.NET ב- ASP.NET Core
  • כיצד להחזיר נתונים מממשק ה- API של ASP.NET Core
  • כיצד לעצב נתוני תגובה ב ASP.NET Core
  • כיצד לצרוך ASP.NET Core API API באמצעות RestSharp
  • כיצד לבצע פעולות סינכרון באמצעות Dapper
  • כיצד להשתמש בדגלי תכונה ב- ASP.NET Core
  • כיצד להשתמש במאפיין FromServices ב- ASP.NET Core
  • כיצד לעבוד עם קובצי Cookie ב- ASP.NET Core
  • כיצד לעבוד עם קבצים סטטיים בליבת ASP.NET
  • כיצד להשתמש ב- Middleware לכתיבת כתובות אתרים בליבת ASP.NET
  • כיצד ליישם הגבלת קצב ב- ASP.NET Core
  • כיצד להשתמש בתובנות יישומי תכלת הרקיע בליבת ASP.NET
  • שימוש בתכונות NLog מתקדמות ב- ASP.NET Core
  • כיצד לטפל בשגיאות ב- ASP.NET Web API
  • כיצד ליישם טיפול חריגים גלובלי ב- ASP.NET Core MVC
  • כיצד לטפל בערכי אפס ב- ASP.NET Core MVC
  • גרסאות מתקדמות ב- ASP.NET Core API
  • כיצד לעבוד עם שירותי עובדים ב- ASP.NET Core
  • כיצד להשתמש ב- API להגנה על נתונים בליבת ASP.NET
  • כיצד להשתמש בתוכנת תיווך מותנית ב- ASP.NET Core
  • כיצד לעבוד עם מצב הפעלה ב- ASP.NET Core
  • כיצד לכתוב בקרים יעילים ב- ASP.NET Core