List<Feature>Remove(f => f.Type == FeatureType.Bug); RSS 2.0
# Tuesday, July 22, 2008

Da ich derzeit ein größeres Projekt plane und vor habe dieses Projekt mit ASP:Net MVC umzusetzen, stoße ich ab und zu auf Dinge die mir in der Default-Implementierung nicht so passen und versuche dann dafür Lösungen zu finden. Da ich in dem neuen Projekt ASP.Net MVC und ASP.Net WebForms kombinieren werde empfinde ich es als wichtig, dass es eine gute Projekt-Struktur gibt.

Die Standard-Struktur ist folgende:

Project-Root

  • Controllers
  • Models
  • Views

 
Mein Ziel:

Project-Root

MVC

  • Controllers
  • Models
  • Views


Was brauchen wir Dafür?:

  • Eine eigene ControllerFactory
  • Einen eigenen ViewLocator


ViewLocator-Source:

using System.Web.Mvc;
 
namespace PPM.BusinessLayer.Web.MVC
{
    public class PPMViewLocator : ViewLocator
    {
        public PPMViewLocator()
        {
            ViewLocationFormats = new[] 
            {
              "~/MVC/Views/{1}/{0}.aspx",
              "~/MVC/Views/{1}/{0}.ascx",
              "~/MVC/Views/Shared/{0}.aspx",
              "~/MVC/Views/Shared/{0}.ascx"
            };
 
            MasterLocationFormats = new[] 
            {
              "~/MVC/Views/{1}/{0}.master",
              "~/MVC/Views/Shared/{0}.master"
            };
        }
    }
}
 
Der Platzhalter {1} wird später durch den Controller-Name ersetzt und der Platzhalter {0} wird später durch den View-Name ersetzt.
 
 
ControllerFactory-Source:

using System.Web.Mvc;
using System.Web.Routing;
 
namespace PPM.BusinessLayer.Web.MVC
{
    public class PPMControllerFactory : DefaultControllerFactory
    {
        protected override IController CreateController(RequestContext requestContext, string controllerName)
        {
            Controller controller = (Controller)base.CreateController(requestContext, controllerName);
            ((WebFormViewEngine) controller.ViewEngine).ViewLocator = new PPMViewLocator();
 
            return controller;
        }
    }
}

Hier leiten wir von der DefaultControllerFactory ab und überschreiben die CreateController Methode. In der Methode lassen wir die Basis den Controller erzeugen und setzen bei der ViewEngine des erzeugten Controller den ViewLocator auf unseren eigenen ViewLocator. Nun fehlt nur noch der Code zum registrieren unser eigenen ControllerFactory. Dies erreicht man indem man in der Global.asax in der Methode Application_Start die neue ControllerFactory setzt:

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
 
    // plug in our custom controller factory to replace the default view locator
    ControllerBuilder.Current.SetControllerFactory(typeof(PPMControllerFactory));
}

Das wars Smile

Tuesday, July 22, 2008 8:48:08 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -

# Sunday, July 06, 2008

Da bei meinem Server in den letzten Wochen immer mehr und mehr Probleme aufgetreten sind, hatte ich mich heute Morgen dazu entschlossen meinen Server neu zu installieren. Bei der Gelegenheit habe ich auch gleiche das Betriebssystem von Windows 2003 auf Windows 2008 gewechselt.

Leider ist durch die Probleme der letzten Zeit ein Problem untergegangen - Es wurden keine Datenbank-Backups mehr erstellt. Als ich nun freudestrahlend alles installiert hatte und meine Datenbank-Backups einspielen wollte, musste ich feststellen, dass alles  weg war Crying.

Somit ist die Datenbank meines Community Servers dahin und ich steh ohne Blog da. Naja, sind zwar alle Blogposts weg, aber ich wollte eh zurück zu "DasBlog".

Ich hoffe mal nicht, dass ich noch mehr Überraschungen beim Wiederherstellen meines Server's erlebe Disappointed.

Grüße,
Jens

Sunday, July 06, 2008 9:51:37 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0] -

Navigation
Categories
Archive
<July 2008>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Jens Hofmann
Sign In
Statistics
Total Posts: 6
This Year: 0
This Month: 0
This Week: 0
Comments: 0
Themes
Pick a theme:
All Content © 2010, Jens Hofmann
DasBlog theme 'Business' created by Christoph De Baene (delarou)