ก่อน ASP.net 4.0 เพื่อสร้าง URL ที่เป็นมิตรกับเครื่องมือค้นหาและใช้งานง่าย เราจำเป็นต้องเขียน Url ใหม่ด้วยตัวเอง ตอนนี้ .Net 4.0 ไม่จำเป็นต้องทำทั้งหมดนี้ให้เราแล้ว UrlRouting เรียกว่า Routing เนื่องจากไม่เพียงแต่ใช้การเขียน Url ใหม่เท่านั้น แต่ยังสามารถรับ Url ที่เขียนใหม่ผ่านพารามิเตอร์และนำไปใช้บนเพจได้อีกด้วย
1. การใช้งานทั่วไปของการกำหนดเส้นทาง URL
UrlRouting ใช้กันอย่างแพร่หลายในโปรเจ็กต์ Asp.Net Mvc และมีประโยชน์มากใน Mvc ดังนั้นจึงถูกย้ายไปยังเว็บฟอร์มก่อนอื่น มาดูวิธีการใช้เว็บฟอร์มกันก่อน สมมติว่าสถานการณ์การใช้งาน: เราจำเป็นต้องสร้างเพจสำหรับบล็อกรายวัน โพสต์ ที่อยู่ URL ที่เราต้องการคือ:
/เก็บถาวร/2010/05/10/default.aspx
ที่อยู่นี้จะถูกแมปกับไฟล์ ~/posts.aspx
หากต้องการใช้ UrlRouting คุณต้องลงทะเบียนกฎ UrlRouting ลงใน RouteTable รหัสสำหรับการลงทะเบียนกฎการกำหนดเส้นทางในไฟล์ Global มีดังนี้:
ดู sourceprint?01 โมฆะสาธารณะคง RegisterRoutes (เส้นทาง RouteCollection)
02 {
03 เส้นทาง ละเว้น ("{resource}.axd/{*pathInfo}");
04
05 เส้นทางMapPageRoute("blogs", //ตั้งชื่อกฎ UrlRouting นี้
06 "เก็บถาวร/{ปี}/{เดือน}/{date}/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)d{2}"},
15 {"เดือน","@"d{1,2}"},
16 {"วันที่",@"d{1,2}"}
17 } //กฎของพารามิเตอร์ เราจำกัดปี เดือน และวันใน url ให้อยู่ในรูปแบบข้อมูลที่เราต้องการ
18);
19
20}
ยี่สิบเอ็ด
22 เป็นโมฆะ Application_Start (ผู้ส่งวัตถุ EventArgs e)
ยี่สิบสาม {
24 //กฎการกำหนดเส้นทางที่ลงทะเบียนที่ Application_Start
25 RegisterRoutes (เส้นทางตาราง เส้นทาง);
26}
2. ใช้ค่าพารามิเตอร์ UrlRouting ในหน้า 1) ใช้ค่าเส้นทางในโค้ดพื้นหลัง
ดู sourceprint? 1 โมฆะที่ได้รับการป้องกัน Page_Load (ผู้ส่งวัตถุ EventArgs e)
2 {
3 ปีสตริง = (สตริง)RouteData.Values["ปี"];
4 สตริงเดือน = (สตริง)RouteData.Values["เดือน"];
วันที่ 5 สตริง = (สตริง)RouteData.Values["date"];
6}
2) การใช้งานบนหน้า
ดู sourceprint?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
ดู sourceprint?1 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TestDb %>"
2 SelectCommand="เลือก BlogID,BlogTitle จากบล็อก โดยที่ Category = @category">
3 <เลือกพารามิเตอร์>
4 <asp:RouteParameter Name = "ประเภท" RouteKey = "ประเภท" / >
5 </เลือกพารามิเตอร์>
6 </asp:SqlDataSource>
4) แสดง RouteUrl บนเพจ
ดู sourceprint?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