ASP.NET 4 Beta 1: WebForms طرق تمديد الممرات (العربية (Arabic))

ASP.NET 4 Beta 1: WebForms طرق تمديد الممرات

Sunday, 14 March 2010

//

4 minute read

عندما كنا نضيف routing WebForm الى ASP.NET 4 Beta 1, لم نكن نملك’ فرصة لإضافة بعض الطرق التي تجعل العمل مع Routes و Web Forms أسهل بكثير

لاحظوا : أن الشفرة التالية هي ‘ متشابهة | ’ | مع الشفرة التي نضيفها |’ | ASP *that* الرمز سيكون من نوع أعلى بكثير على الرغم من , هذا مجرد عينة

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Web;
   5: using System.Web.Routing;
   6:  
   7:     public static class RouteExtensions
   8:     {
   9:         public static string GetUrlForRoute(this System.Web.UI.Page page, string routeName, RouteValueDictionary parameters)
  10:         {
  11:             VirtualPathData vpd= RouteTable.Routes.GetVirtualPath(null, routeName, parameters);
  12:             return vpd.VirtualPath;
  13:         }
  14:         public static string GetUrlForRoute(this System.Web.UI.Page page, RouteValueDictionary parameters)
  15:         {
  16:             VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, parameters);
  17:             return vpd.VirtualPath;
  18:         }
  19:  
  20:         public static void IgnoreRoute(this RouteCollection routes, string url)
  21:         {
  22:             routes.IgnoreRoute(url, null);
  23:         }
  24:  
  25:         public static void IgnoreRoute(this RouteCollection routes, string url, object constraints)
  26:         {
  27:             if (routes == null)
  28:             {
  29:                 throw new ArgumentNullException("routes");
  30:             }
  31:             if (url == null)
  32:             {
  33:                 throw new ArgumentNullException("url");
  34:             }
  35:             IgnoreRouteInternal internal3 = new IgnoreRouteInternal(url);
  36:             internal3.Constraints = new RouteValueDictionary(constraints);
  37:             IgnoreRouteInternal item = internal3;
  38:             routes.Add(item);
  39:         }
  40:  
  41:         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile)
  42:         {
  43:             return routes.MapRoute(name, url, physicalFile, null, null);
  44:         }
  45:  
  46:         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults)
  47:         {
  48:             return routes.MapRoute(name, url, physicalFile, defaults, null);
  49:         }
  50:  
  51:         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, string[] namespaces)
  52:         {
  53:             return routes.MapRoute(name, url, null, null, namespaces);
  54:         }
  55:  
  56:         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, object constraints)
  57:         {
  58:             return routes.MapRoute(name, url, physicalFile,  defaults, constraints, null);
  59:         }
  60:  
  61:         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, string[] namespaces)
  62:         {
  63:             return routes.MapRoute(name, url, physicalFile,  defaults, null, namespaces);
  64:         }
  65:  
  66:         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, object constraints, string[] namespaces)
  67:         {
  68:             if (routes == null)
  69:             {
  70:                 throw new ArgumentNullException("routes");
  71:             }
  72:             if (url == null)
  73:             {
  74:                 throw new ArgumentNullException("url");
  75:             }
  76:             if (physicalFile == null)
  77:             {
  78:                 throw new ArgumentNullException("physicalfile");
  79:             }
  80:             Route route2 = new Route(url, new PageRouteHandler(physicalFile));
  81:             route2.Defaults = new RouteValueDictionary(defaults);
  82:             route2.Constraints = new RouteValueDictionary(constraints);
  83:             Route item = route2;
  84:             if ((namespaces != null) && (namespaces.Length > 0))
  85:             {
  86:                 item.DataTokens = new RouteValueDictionary();
  87:                 item.DataTokens["Namespaces"] = namespaces;
  88:             }
  89:             routes.Add(name, item);
  90:             return item;
  91:         }
  92:  
  93:         // Nested Types
  94:         private sealed class IgnoreRouteInternal : Route
  95:         {
  96:             // Methods
  97:             public IgnoreRouteInternal(string url)
  98:                 : base(url, new StopRoutingHandler())
  99:             {
 100:             }
 101:  
 102:             public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary routeValues)
 103:             {
 104:                 return null;
 105:             }
 106:         }
 107:     }
 108:  

إذاً , كيف تستخدم هذه الطرق?

هذه الإضافات تضيف بعض الطرق البسيطة:

طريق الخريطة

تم إختطافها بلا عار من MVC. هذه الطرق توفر مفتاح مختصر لتحديد مسارات للوForms

RouteCollection.MapRoute (string name, string urlM SK3 string physicalFileMSC4

على سبيل المثال لرسم مسار بسيط يمكنك الآن القيام به:

جدول المسار.المسارات.مسار الخريطةM SK2تفصيلات المنتجالمسار ”, MSC4محصولات /{وصفة المنتج M SK6 | “~/تفصيلة المنتج

ولديه أيضاً زوج من التغيرات التي تسمح بتحديد الافتراضات وغيره

RouteCollection.MapRoute (string name, string urlM SK3 string physicalFileMST4 object defaultsMSC5

RouteCollection.MapRoute (string name, string urlM SK3 string physicalFileMNK4 object defaultsMRK5 string[] إسميات

GetRouteForUrl

Page.GetUrlForRouteM SK1string routeName, RouteValueDictionary parameters );

باستخدام مسار مسمى بالتحديد RouteValueDictionary يحتوي على عدد من العوامل سوف يعطيك مرة أخرى سلسلة تحتوي على Url لإستخدامها. مفيدة حقا في تطبيقات البيانات

e.g.,

<asp:hyperlink ID="HyperLink1" runat="server"  NavigateUrl='<%# Page.GetUrlForRoute("ProductDetailsRoute",new RouteValueDictionary( new {productid= Eval("ProductID")}))%>'  Text="Details"></asp:hyperlink>

Page.GetUrlForRoute(RouteValueParameters of a dictionary

نفس الشئ, لكن اتوماتيّا- يتطابق مع مبادئ RouteValueDictionary ضد طريقM SK2

تجاهل الرحلة

يسمح لك بتحديد الurls التي لا ينبغي أن تحاول لتطابق مع الطرق ( يمكن أن تكون مفيدة لتطوير تطبيقات Forms

RouteCollection.IgnoreRouteM SK1string url);

RouteCollection.IgnoreRoute (string url, object constraintsM SK3

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.