濮阳杆衣贸易有限公司

主頁 > 知識庫 > System.Web.Routing入門及進階

System.Web.Routing入門及進階

熱門標簽:云南外呼電銷機器人系統(tǒng) 陜西人工外呼系統(tǒng)哪家好 浙江外呼系統(tǒng)怎么安裝 上海楊浦怎么申請申請400電話 地圖標注多個行程 山西防封卡電銷卡套餐 銅川小型外呼系統(tǒng)運營商 海外地圖標注門市標 廈門商鋪地圖標注

System.Web.Routing用于在Asp.net的Web應(yīng)用程序中進行URLRouting。
所謂UrlRouting就是將一個地址映射為另一個地址,比如我訪問/chsword/2008/08/27.html其實是訪問了/chsword/article.aspx?y=2008m=08d=27這個地址,URLRouting使我們的URL看起來非常漂亮。

本文將分2部分介紹UrlRouting的使用分別為入門篇與進階篇。
文章的前提:
1.安裝Visual Studio 2008 sp1或其它IDE的等同版本。
2.建立一個Asp.net Web Application(Asp.net Web應(yīng)用程序)
3.引用System.Web.Routing程序集。
UrlRouting的實現(xiàn)原理
如果你不是追求理論的人,僅僅是務(wù)實主義,可以直接從準備工作讀起。
為了方便大家理解我繪制了一個UML圖,其中通過RouteTable的Routes這個屬性可以獲取一個RouteCollection的Singleton模式,雖然在其中并沒有判斷值不存在時才初始化的Singleton的標志性行為,但是它是在Application_Start事件中進行初始化的,并且直到應(yīng)用程序進程終結(jié),所以是Singleton模式的。

而通過以下方式將Route添加到RouteTable.Routes中
RouteTable.Routes.Add(new Route());
以上代碼僅為表示其流程,這個代碼是不能正確執(zhí)行的,因為Route沒有提供無參構(gòu)造函數(shù)。
Route初始化時則是利用RouteValueDictionary來加入默認值及規(guī)則到Route中
另外Route還有一個IRouteHandler的實現(xiàn)對象,IRouteHandler的實現(xiàn)對象提供了一個GetHttpHandler方法來獲取用于處理URL的IHttpHandler。
這么說還是停留在抽象層次的,下面我們以一些簡單例子來帶你馭起UrlRouting。
準備工作
由于須要一個處理Url的IHttpHandler所以我們先定義一個實現(xiàn)了IHttpHandler接口的類。
就叫它MyPage,由于我們要與IRouteHandler交互,所以除了實現(xiàn)IHttpHandler的方法之外還要聲明一個RequestContext類型的屬性。

復(fù)制代碼 代碼如下:

public class MyPage:IHttpHandler {
public RequestContext RequestContext { get; private set; }
public MyPage(RequestContext context)
{
this.RequestContext = context;
}
#region IHttpHandler 成員
public virtual void ProcessRequest(HttpContext context){}
public bool IsReusable {
get { return false; }
}
#endregion
}

這樣我們就擁有了一個自己的IHttpHandler。
下面我們實現(xiàn)一個IRouteHandler:
復(fù)制代碼 代碼如下:

public class MyRouteHandler : IRouteHandler {
#region IRouteHandler 成員
public IHttpHandler GetHttpHandler(RequestContext requestContext) {
return new MyPage(requestContext);
}
#endregion
}

這里實現(xiàn)了IRouteHandler的GetHttpHandler方法,使之返回剛才我們實現(xiàn)的MyPage。
這樣我們前期的2個工作就做完了,我們可以來實現(xiàn)UrlRouting了。
實現(xiàn)第一個UrlRouting
其實UrlRouting在定義完上兩個規(guī)則后就很簡單了。
在Golbal.asax(沒有可以新建一個)的Application_Start事件中寫如下代碼
復(fù)制代碼 代碼如下:

protected void Application_Start(object sender, EventArgs e) {
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes) {
routes.Add(new Route("{page}.aspx",new MyRouteHandler()));
}

這樣我們就定義了第一個UrlRouting規(guī)則就是對xxxx.aspx這類的Url進行Routing。
但是我們僅僅是定義了處理了什么樣的Url,卻沒定義如何處理。
我們應(yīng)該在剛剛定義的MyPage的ProcessRequest方法中定義如何處理。
我們將ProcessRequest方法實現(xiàn)如下:
復(fù)制代碼 代碼如下:

public virtual void ProcessRequest(HttpContext context){
context.Server.Execute( RequestContext.RouteData.Values["page"].ToString().Replace("_","/")+".aspx"
);
}

很顯然這里的RequestContext.RouteData.Values["page"]就是取到剛才的規(guī)則{page}.aspx中的page的值即,如果我訪問index.aspx則RequestContext.RouteData.Values["page"]就是index。
我這里的定義是將”_”替換為”/”所以就是將list_index.aspx這樣的URL轉(zhuǎn)到list/index.aspx這樣的網(wǎng)頁上。
我們建立一些測試用的網(wǎng)頁如下圖所示:

在這些網(wǎng)頁里隨意寫些可以分辨網(wǎng)頁的文字。
則訪問list_chsword.aspx時自動Routing到了list/chsword.aspx上了。
總結(jié)一下UrlRouting與以下有關(guān):
1. Application_Start中定義的規(guī)則
2. 自己實現(xiàn)的IHttpHandler類

這樣您對于UrlRouting就算是入門了,下一篇我們將來講一些進階設(shè)置。

您可能感興趣的文章:
  • ASP.NET組件System.Web.Optimization原理及緩存問題詳解
  • 無法將類型為“System.Web.UI.WebControls.HiddenField”的對象強制轉(zhuǎn)換為類型的錯誤的解決
  • System.Web.Routing入門及進階
  • NET Runtime Optimization Service 1101 錯誤的解決方法
  • ASP.NET MVC命名空間時引起錯誤的解決方法
  • ASP.Net中命名空間Namespace淺析和使用例子
  • System.Web中不存在類型或命名空間名稱“Optimization”(是否缺少程序集引用?)

標簽:朔州 萊蕪 許昌 常州 西雙版納 自貢 信陽 孝感

巨人網(wǎng)絡(luò)通訊聲明:本文標題《System.Web.Routing入門及進階》,本文關(guān)鍵詞  System.Web.Routing,入門,及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《System.Web.Routing入門及進階》相關(guān)的同類信息!
  • 本頁收集關(guān)于System.Web.Routing入門及進階的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章
    繁昌县| 依兰县| 乌兰察布市| 灵山县| 天水市| 永州市| 钟祥市| 壶关县| 特克斯县| 张家港市| 黄大仙区| 思茅市| 宿迁市| 建水县| 甘南县| 恩平市| 平顺县| 垦利县| 班戈县| 大港区| 临沭县| 灵璧县| 绍兴市| 鹤峰县| 济宁市| 许昌市| 日照市| 厦门市| 郴州市| 旬阳县| 新丰县| 密山市| 黎城县| 娱乐| 共和县| 曲靖市| 闽侯县| 嵩明县| 乌审旗| 电白县| 上蔡县|