Friday, April 08, 2011

ASP.NET MVC 3.0 Internals

ASP.NET MVC 3.0 Internals
בפוסט זה אני רוצה לכתוב על איך עובד ה- ASP.NET MVC 3.0 ואיפה אפשר להרחיב ולשנות את הטכנולוגיה.
אני מחלק את הפוסט לארבעה חלקים:
1. החיבור בין ASP.NET ל- ASP.NET MVC
2. Controller Extensibility
3. Model Extensibility
4. View Extensibility
1. החיבור בין ASP.NET ל- ASP.NET MVC.
ה- MVC חי בתוך ה- ASP.NET וכדי לשנות את סדר הפעולות שקורות ב- ASP.NET הוא משתמש במנגנון ה-
Routing שנוסף בדוט-נט 4, הוא רושם אוביקט Route ל- RouteTable.


clip_image002_thumb_7B0D9450.png

ב- Global.asax.cs אנחנו יכולים לראות את הקוד הבא:

routes.MapRoute(
    "Default",                    // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new                           // Parameter defaults
    {
       controller = "Home",
       action     = "Index",
       id         = UrlParameter.Optional
    }
);
המתודה MapRoute היא Extension Method תפקידה ליצור אוביקט Route שמקשר בין ה- "{controller}/{action}/{id}" ל- MvcRouteHandler. אם מסתכלים בתוך הקוד של המתודה MapRoute נמצא את השורות הבאות:
var route = 
     new Route( url , new MvcRouteHandler() )
     {
        Defaults    = new RouteValueDictionary(defaults),
        Constraints = new RouteValueDictionary(constraints),
        DataTokens  = new RouteValueDictionary()
     };

Read more: I Love C#