ASP.NET MVC HandleUnknownAction zum Zurückgeben des aufgerufenen Views verwenden


In vielen meiner MVC Projekten, in denen ich auf AngularJS für das UI setze, verwende ich immer noch die Standard MVC Views mit “Layout = null”, um das HTML Template auch .NET Seitig noch manipulieren zu können. Dabei gibt es dann eine Menge Controller Funktionen die einfach nur ein ActionResult mit dem zugehörigen View zurückgeben z.B.:

public class TodoController : Controller
{
   #region Views
   public ActionResult TodoOverview()
   {
       return View();
   }
   #endregion

   #region Modals
   public ActionResult TodoEditModal()
   {
       return View();
   }
   #endregion
}

Dabei handelt es sich immer wieder um den gleichen Boilerplate Code und zum Glück gibt es auch hier eine Möglichkeit dies mit ASP.NET MVC zu optimieren und nur noch eine Funktion “HandleUnknownAction” zu verwenden.

public class TodoController : Controller
{
    protected override void HandleUnknownAction(string actionName)
    {
       try
        {
           this.View(actionName).ExecuteResult(this.ControllerContext);
         }
         catch (System.Exception)
         {
            this.View("404").ExecuteResult(this.ControllerContext);
          }
     }
}

Diese Überschriebene Funktion wird immer aufgerufen, wenn zum zugehörigen Controller Aufruf keine passende Action im aktuellen Controller gefunden werden kann und versucht dann automatisch den übergebenen Actionnamen auf einen existierenden View zu Mappen.

Wenn es hier noch andere oder bessere Lösungen gibt freue ich mich über einen Kommentar, aber aktuell habe ich nichts besseres finden können.

Quelle:

http://stephenwalther.com/archive/2008/07/21/asp-net-mvc-tip-22-return-a-view-without-creating-a-controller-action

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s