So leiten Sie eine Anforderung in ASP.NET Core MVC um

ASP.NET Core ist ein plattformübergreifendes, quelloffenes, schlankes, schnelles und modulares Framework zum Erstellen leistungsstarker Webanwendungen. Mit ASP.NET Core MVC-Anwendungen können Sie eine Anforderung auf verschiedene Arten an eine angegebene URL umleiten. In diesem Artikel wird erläutert, wie dies mit Codebeispielen erreicht werden kann, wo immer dies angebracht ist.

Um mit den in diesem Artikel bereitgestellten Codebeispielen arbeiten zu können, muss Visual Studio 2019 auf Ihrem System installiert sein. Wenn Sie noch keine Kopie haben, können Sie Visual Studio 2019 hier herunterladen. 

[Ebenfalls zu: Wie man Gottobjekte in C # umgestaltet]

Erstellen Sie ein ASP.NET Core MVC-Projekt in Visual Studio

Lassen Sie uns zunächst ein ASP.NET Core-Projekt in Visual Studio 2019 erstellen. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die folgenden Schritte aus, um ein neues ASP.NET Core-Projekt in Visual Studio zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "ASP.NET Core-Webanwendung" aus.
  4. Weiter klicken.
  5. Geben Sie im Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Aktivieren Sie optional das Kontrollkästchen "Lösung und Projekt im selben Verzeichnis platzieren", abhängig von Ihren Einstellungen.
  7. Klicken Sie auf Erstellen.
  8. Wählen Sie im nächsten Fenster "Neue ASP.NET Core-Webanwendung erstellen" .NET Core als Laufzeit und ASP.NET Core 3.1 (oder höher) aus der Dropdown-Liste oben aus.
  9. Wählen Sie als Projektvorlage „Webanwendung (Model-View-Controller)“ aus, um eine neue ASP.NET Core MVC-Anwendung zu erstellen. 
  10. Stellen Sie sicher, dass die Kontrollkästchen "Docker-Unterstützung aktivieren" und "Für HTTPS konfigurieren" deaktiviert sind, da diese Funktionen hier nicht verwendet werden.
  11. Stellen Sie sicher, dass die Authentifizierung auf "Keine Authentifizierung" eingestellt ist, da wir auch keine Authentifizierung verwenden.
  12. Klicken Sie auf Erstellen.

Wenn Sie diese Schritte ausführen, wird in Visual Studio 2019 ein neues ASP.NET Core MVC-Projekt erstellt. In den folgenden Abschnitten wird anhand dieses Projekts veranschaulicht, wie Anforderungen bei der Arbeit mit Aktionsmethoden in ASP.NET Core 3.1 umgeleitet werden können.

Umleitungsaktionsergebnisse in ASP.NET Core MVC

In ASP.NET Core MVC gibt es verschiedene Arten von Aktionsergebnissen, z. B. RedirectResult, RedirectToActionResult, RedirectToRouteResult und LocalRedirectResult. Alle diese Klassen erweitern die ActionResult-Klasse und die Schnittstellen IActionResult und IKeepTempDataResult und geben Found (HTTP-Statuscode 302), Permanent verschoben (HTTP-Statuscode 301), Temporäre Umleitung (HTTP-Statuscode 307) oder Permanente Umleitung (HTTP-Statuscode 308) zurück ).

In diesem Abschnitt werden wir untersuchen, wie wir mit jedem dieser Elemente arbeiten können.

Verwenden Sie RedirectResult in ASP.NET Core MVC

Sie können eine der folgenden Methoden verwenden, um ein RedirectResult zurückzugeben:

  • Weiterleiten - HTTP-Statuscode 302 gefunden (vorübergehend auf die im Speicherortkopf angegebene URL verschoben)
  • RedirectPermanent - HTTP-Statuscode 301 Permanent verschoben
  • RedirectPermanentPreserveMethod - HTTP-Statuscode 308 Permanente Umleitung
  • RedirectPreserveMethod - HTTP-Statuscode 307 Temporäre Umleitung

Die folgenden Codezeilen zeigen, wie Sie jede dieser Methoden verwenden können.

Weiterleiten ("/ Autor / Index");
RedirectPermanent ("/ Author / Index");
RedirectPermanentPreserveMethod ("/ Author / Index");
RedirectPreserveMethod ("/ Author / Index");

Alternativ können Sie eine Instanz von RedirectResult zurückgeben, wie im unten angegebenen Code-Snippet gezeigt.

public RedirectResult Index ()

{

   neues RedirectResult zurückgeben (URL: "/ Author / Index", permanent: true,

                             erveMethod: true);

}}

Beachten Sie, dass die Redirect-Methode verwendet werden kann, um eine Anforderung an eine angegebene URL umzuleiten. Diese Methode ist in der abstrakten Basisklasse ControllerBase verfügbar.

public RedirectResult Index ()

{

  return Redirect ("// google.com");

}}

Es ist zu beachten, dass die in ASP.NET Core MVC erstellten Controller die Controller-Klasse erweitern. Diese Klasse erweitert wiederum die ControllerBase-Klasse und implementiert die Schnittstellen IActionFilter, IFilterMetadata, IAsyncActionFilter und IDisposable.

Verwenden Sie RedirectToActionResult in ASP.NET Core MVC

Dieses Aktionsergebnis kann verwendet werden, um zur angegebenen Aktion und zum angegebenen Controller umzuleiten. Wenn kein Controller angegeben ist, wird zur angegebenen Aktion innerhalb des aktuellen Controllers umgeleitet. Sie können eine der folgenden Methoden verwenden, um zur angegebenen Aktion umzuleiten und eine Instanz von RedirectToActionResult von Ihrer Aktionsmethode zurückzugeben.

  • RedirectToAction - HTTP-Statuscode 302 gefunden (vorübergehend auf die im Speicherortkopf angegebene URL verschoben)
  • RedirectToActionPermanent - HTTP-Statuscode 301 dauerhaft verschoben
  • RedirectToActionPermanentPreserveMethod - HTTP-Statuscode 308 Permanente Umleitung
  • RedirectToActionPreserveMethod - HTTP-Statuscode 307 Temporäre Umleitung

Das folgende Codeausschnitt zeigt, wie die RedirectToAction-Methode verwendet werden kann.

public RedirectToActionResult Index ()

{

    return RedirectToAction (actionName: "Index", controllerName: "Author");

}}

Sie können den Controllernamen überspringen, wenn Sie die Anforderung an eine Aktionsmethode im aktuellen Controller umleiten möchten. Das folgende Codefragment zeigt, wie dies erreicht werden kann.

public RedirectToActionResult Index ()

{

   return RedirectToAction (actionName: "Privacy");

}}

Verwenden Sie RedirectToRouteResult in ASP.NET Core MVC

Dies ist ein weiteres Aktionsergebnis, mit dem die Anforderung auf die angegebene Route umgeleitet werden kann. Sie können eine der folgenden Methoden verwenden, um eine Instanz von RedirectToRouteResult von Ihrer Aktionsmethode zurückzugeben.

  • RedirectToRoute - HTTP-Statuscode 302 gefunden (vorübergehend auf die im Speicherortkopf angegebene URL verschoben)
  • RedirectToRoutePermanent - HTTP-Statuscode 301 dauerhaft verschoben
  • RedirectToRoutePermanentPreserveMethod - HTTP-Statuscode 308 Permanente Umleitung
  • RedirectToRoutePreserveMethod - HTTP-Statuscode 307 Temporäre Umleitung

Das folgende Codefragment zeigt, wie die RedirectToRoute-Methode verwendet werden kann.

public RedirectToRouteResult Index ()

{

    return RedirectToRoute ("author");

}}

Sie können den Routenwert auch bei der Umleitung angeben, wie im folgenden Code-Snippet gezeigt.

var routeValue = neues RouteValueDictionary

 (new {action = "View", controller = "Author"});

return RedirectToRoute (routeValue);

Verwenden Sie LocalRedirectResult in ASP.NET Core MVC

Dieses Aktionsergebnis wird verwendet, wenn Sie zu einer lokalen URL umleiten möchten. Es wird eine InvalidOperationException ausgelöst, wenn Sie eine externe URL verwenden. Sie können eine der folgenden Methoden verwenden, um eine Instanz von LocalRedirectResult von Ihrer Aktionsmethode zurückzugeben.

  • LocalRedirect - HTTP-Statuscode 302 gefunden (vorübergehend auf die im Speicherortkopf angegebene URL verschoben)
  • LocalRedirectPermanent - HTTP-Statuscode 301 Permanent verschoben
  • LocalRedirectPermanentPreserveMethod - HTTP-Statuscode 308 Permanente Umleitung
  • LocalRedirectPreserveMethod - HTTP-Statuscode 307 Temporäre Umleitung

Weiterleiten zu Rasiermesserseiten in ASP.NET Core MVC

Beachten Sie schließlich, dass Sie mit der RedirectToPage-Methode sogar zu Rasiermesserseiten umleiten können, indem Sie die Zielrasiererseite angeben, an die die Anforderung umgeleitet werden soll. Die RedirectToPage-Methode gibt eine RedirectToPageResult-Instanz zusammen mit einem HTTP-Statuscode 302 zurück.

Wenn Sie eine Seite mit dem Namen Autor haben, auf der die Anforderung umgeleitet werden soll, können Sie das folgende Codefragment verwenden.

public IActionResult RedirectToAuthorPage ()

{

    return RedirectToPage ("Autor");

}}

So machen Sie mehr in ASP.NET Core:

  • Verwendung des Attributroutings in ASP.NET Core
  • Übergeben von Parametern an Aktionsmethoden in ASP.NET Core MVC
  • Verwendung von API-Analysatoren in ASP.NET Core
  • So verwenden Sie Routendatentoken in ASP.NET Core
  • Verwendung der API-Versionierung in ASP.NET Core
  • Verwendung von Datenübertragungsobjekten in ASP.NET Core 3.1
  • Behandlung von 404-Fehlern in ASP.NET Core MVC
  • Verwendung der Abhängigkeitsinjektion in Aktionsfiltern in ASP.NET Core 3.1
  • Verwendung des Optionsmusters in ASP.NET Core
  • Verwendung des Endpunktroutings in ASP.NET Core 3.0 MVC
  • Exportieren von Daten nach Excel in ASP.NET Core 3.0
  • Verwendung von LoggerMessage in ASP.NET Core 3.0
  • So senden Sie E-Mails in ASP.NET Core
  • So protokollieren Sie Daten in SQL Server in ASP.NET Core
  • So planen Sie Jobs mit Quartz.NET in ASP.NET Core
  • So geben Sie Daten von der ASP.NET Core Web API zurück
  • So formatieren Sie Antwortdaten in ASP.NET Core
  • So verwenden Sie eine ASP.NET Core-Web-API mit RestSharp
  • So führen Sie asynchrone Vorgänge mit Dapper aus
  • Verwendung von Feature-Flags in ASP.NET Core
  • Verwendung des FromServices-Attributs in ASP.NET Core
  • So arbeiten Sie mit Cookies in ASP.NET Core
  • So arbeiten Sie mit statischen Dateien in ASP.NET Core
  • Verwendung der URL-Rewriting-Middleware in ASP.NET Core
  • Implementieren der Ratenbegrenzung in ASP.NET Core
  • So verwenden Sie Azure Application Insights in ASP.NET Core
  • Verwenden erweiterter NLog-Funktionen in ASP.NET Core
  • Behandlung von Fehlern in der ASP.NET-Web-API
  • Implementieren der globalen Ausnahmebehandlung in ASP.NET Core MVC
  • Umgang mit Nullwerten in ASP.NET Core MVC
  • Erweiterte Versionierung in der ASP.NET Core-Web-API
  • So arbeiten Sie mit Worker Services in ASP.NET Core
  • Verwendung der Datenschutz-API in ASP.NET Core
  • Verwendung der bedingten Middleware in ASP.NET Core
  • So arbeiten Sie mit dem Sitzungsstatus in ASP.NET Core
  • So schreiben Sie effiziente Controller in ASP.NET Core