قبل ASP.net 4.0، لكي نجعل عناوين URL سهلة الاستخدام ومحركات البحث، كنا بحاجة إلى تنفيذ عملية إعادة كتابة URL بأنفسنا. والآن لا نحتاج إلى القيام بكل هذا من أجلنا. يُطلق على UrlRouting اسم التوجيه لأنه لا ينفذ إعادة كتابة عنوان URL فحسب، بل يمكنه أيضًا الحصول على عنوان URL المعاد كتابته من خلال المعلمات واستخدامه على الصفحة.
1. الاستخدام الشائع لتوجيه URL
يتم استخدام UrlRouting على نطاق واسع في مشاريع Asp.Net Mvc وهو مفيد جدًا في Mvc، لذا دعنا نلقي نظرة أولاً على كيفية استخدامه في نموذج الويب: لنفترض سيناريو الاستخدام: نحتاج إلى إنشاء صفحة للمدونة اليومية عنوان URL الذي نريده هو:
/archive/2010/05/10/default.aspx
سيتم تعيين هذا العنوان إلى الملف ~/posts.aspx
لاستخدام UrlRouting، تحتاج إلى تسجيل قواعد UrlRouting في RouteTable. رمز تسجيل قواعد التوجيه في الملف العمومي هو كما يلي:
عرض المصدر؟ 01 RegisterRoutes الفراغ العام الثابت (طرق RouteCollection)
02 {
03 طرق. تجاهل("{resource}.axd/{*pathInfo}");
04
05 طرق.MapPageRoute("blogs"، // أعط اسمًا لقاعدة UrlRouting هذه
06 "أرشيف/{سنة}/{شهر}/{تاريخ}/default.aspx"، // نأمل أن يكون تنسيق عنوان URL مناسبًا
07 "~/blogs.aspx"، // مسار صفحة aspx المعين
08 false, // هل تحتاج إلى التحقق من أذونات المستخدم؟
09 جديد RouteValueDictionary{ { "السنة"، DateTime.Now.Year }،
10 { "شهر"، DateTime.Now.Month }،
11 {"تاريخ"، DateTime.Now.Date}
12 },//القيمة الافتراضية للمعلمة
13 RouteValueDictionary جديد {
14 {"السنة"،@"(19|20)د{2}"},
15 {"شهر"،@"د{1,2}"},
16 {"التاريخ"،@"د{1,2}"}
17 } // قواعد المعلمات، نحدد السنة والشهر واليوم في عنوان URL بتنسيق البيانات الذي نريده.
18)؛
19
20}
واحد وعشرون
22 تطبيق_بدء فارغ (مرسل الكائن، EventArgs e)
ثلاثة وعشرين {
24 //قواعد التوجيه المسجلة في Application_Start
25 RegisterRoutes(RouteTable.Routes);
26}
2. استخدم قيمة معلمة UrlRouting في الصفحة 1) استخدم قيمة المسار في رمز الخلفية
عرض المصدر؟1 Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
2 {
3 سلسلة year = (string)RouteData.Values["year"];
4 سلسلة شهر = (سلسلة)RouteData.Values["الشهر"];
5 سلسلة تاريخ = (سلسلة)RouteData.Values["date"];
6}
2) استخدم على الصفحة
عرض المصدر؟1 <asp:Literal ID="literalYear" runat="server" Text="<%$RouteValue:year %>"></asp:Literal>
2-<asp:Literal ID="literal1" runat="server" Text="<%$RouteValue:month %>"></asp:Literal>
3-<asp:Literal ID="literal2" runat="server" Text="<%$RouteValue:date %>"></asp:Literal>
3) استخدم RouteParameter في DataSource
عرض المصدر؟1 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestDb %>"
2 SelectCommand="حدد BlogID,BlogTitle من المدونات حيث الفئة = @category">
3 <حدد المعلمات>
4 <asp:RouteParameter Name="category" RouteKey="category" />
5 </حدد المعلمات>
6 </asp:SqlDataSource>
4) عرض RouteUrl على الصفحة
عرض المصدر؟1 <a href='<%=GetRouteUrl("blogs",new {year=2010,month=05,date=05}) %>'>المدونة بتاريخ 1 مايو، 2010</a>
3. الفرق بين UrlRouting وUrlRewrite
يعد UrlRouting شيئًا جديدًا نسبيًا مقارنة بإعادة كتابة عنوان URL. وتتمثل ميزة UrlRouting في أنه يمكنه إجراء تحويل ثنائي الاتجاه، ولكنه لا يمكنه أيضًا إعادة كتابة عنوان URL، بل يمكنه أيضًا الحصول على عنوان URL المعاد كتابته بناءً على بعض المعلمات على سبيل المثال، إذا كنت تريد إعادة كتابة اسم المجال، مثل عنوان المدونة yukaizhao.cnblogs.com، فلا يمكن لـ UrlRouting القيام بذلك، ويمكنك فقط استخدام UrlRewrite.
http://www.cnblogs.com/yukaizhao/archive/2010/05/20/urlrouting_asp_net_40.html