RenderAction und SubControllers in ASP.NET MVC

Letzte Woche habe ich mir einige Videos über ASP.NET MVC angesehen. In Folge 11 der Reihe “ASP.NET MVC Storefront” erstellt Rob Conery eine ASP.NET-MVC-Komponente. Dabei geht es darum, aus der View eine Action-Methode auf einem ComponentController aufzurufen und das Ergebnis in die View einzufügen. Mike Bosch erklärt das Konzept in einem Blogartikel.

In ASP.NET MVC Preview 4 wurden ComponentController entfernt und die Methode RenderComponent, die aus der View die Controller-Action aufgerufen hat, durch die Methode RenderAction ersetzt, die eine Action auf einem normalen MVC-Controller aufrufen kann. Da dieses Konzept dem Prinzip “Separation of Concerns” widerspricht, plant Microsoft, dieses Feature nicht in die RTM-Version von ASP.NET MVC aufzunehmen.

ASP.NET MVC Futures

Deshalb hat das ASP.NET-MVC-Team die RenderAction-Methode in die ASP.NET MVC Futures verschoben, die aus der Assembly Microsoft.Web.Mvc.dll besteht. Diese Assembly enthält Features, die es nicht mehr in die RTM-Version geschafft haben. Die zur Beta1-Version von ASP.NET MVC passende Release kann von Codeplex heruntergeladen werden.

Um die ASP.NET MVC Futures in einem MVC-Projekt zu verwenden, referenzieren Sie die Assembly Microsoft.Web.Mvc.dll in Ihrem MVC-Projekt und fügen eine Zeile in die Web.config unter “configuration/system.web/pages/namespaces” ein:

Konfigurationseinstellungen um ASP.NET MVC in alle Views einzubinden

Damit wird der Namespace “Microsoft.Web.Mvc” in alle Views automatisch eingebunden.

SubControllers aus dem Projekt MvcContrib

SubControllers erfüllen einen ähnlichen Zweck wie Components oder RenderAction. In einem Blogeintrag hat Matt Hinze dieses Feature aus dem MvcContrib-Projekt vorgestellt. SubController-Actions können als Delegate in die View-Daten eingebracht werden. Die Views können dann diese Delegates aufrufen und die mit der jeweiligen Subcontroller-Action verbundenen View rendern lassen.

Der Host-Controller kann Objekte an einen SubController übergeben. Dieses Feature beschreibt Matt Hinze in einem weiteren Blogeintrag.


Kick It auf dotnet-kicks.de
Dieser Eintrag wurde veröffentlicht in .NET und getagged , , . Bookmarken: Permanent-Link. Kommentieren oder ein Trackback hinterlassen: Trackback-URL.