Back to "SPSPS.net 4 Beta 1: طرق التوسع في توجيه نماذج الشبكة العالمية"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

Imported mostlylucidcouk

SPSPS.net 4 Beta 1: طرق التوسع في توجيه نماذج الشبكة العالمية

Sunday, 14 March 2010

عندما اضفنا نظام ويب ويب معبر إلى ASP.net 4 Beta 1، لم تتح لنا الفرصة لإضافة في بعض الطرق التي تجعل العمل مع الطرق وأشكال الويب أسهل بكثير!

ملاحظة: الرمز الوارد أدناه هو " مماثل " للرمز الذي نضيفه إلى ASP.net 4 Beta 2، * أن* رمز سيكون أعلى جودة بكثير على أية حال، هذه عينة فقط!

   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:  

إذاً كيف تستخدم هذه الأساليب؟

ويضاف إلى هذه التمديدات عدد قليل من الطرق البسيطة:

المحتويات

هذه الطرق توفر اختصاراً لتعريف طرق أشكال ويب.

المسارCollection.MapRoute( اسم السلسلة ، سلسلة الأورل ، سلسلة المعامل الفيزيائي)؛

على سبيل المثال إلى خريطة a بسيط طريق أنت الآن يعمل:

(ب) "المنتجات/[المنتجات]، "المنتجات/ {المنتجات}"، "~/Productededtails.aspx")؛

لديه أيضاً بعض المتغيرات التي تسمح بتعريف الإفتراضات

MapRoeut( tring name, tring url, trait difaile, documents)

MMAPRount(% 1)[(أ) أسماء الأماكن؛

الحصول على روتيناً لـUrl

الصفحة. getUrlFor Route (طريقة السلسلةName, وبارامترات DreetValueDiactionary)؛

استخدام مسار مسمّى و الطريق Value معرف يحتوي على عدد من البارامترات سوف يعطيك مرة أخرى سلسلة نصية تحتوي على أورل لاستخدامها. مفيد حقا في تطبيقات البيانات!

مثلاً مثلاً،

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

الصفحة. getUrl For Roeute (Roete Value Dictionary بارامترات)؛

الشيء نفسه، لكن تلقائياً يَضِعُ الطريقَ Value Diactionary البارامترات ضدّ a طريق

الدالة الدالة الدالة

يسمح لك بتعريف الأوريلات التي لا ينبغي اختبارها لمباريات ضد الطرق (يمكن أن تكون مفيدة لتحديث تطبيقات WebForms)

TROLColection. Ignore Rote( string url);

المسارCoolection.IgnoreRoute(String url, constitutions)

logo

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