前言:
單看標題,可能很多朋友不知道我到底想寫什麼。在寫這篇文章前,我自己跟自己鬥爭了很久,到底該不該寫這篇文章?畢竟從現實主義來看,這篇文章可能落入「瞎扯淡」的行列,因為對大多數朋友來說,以下的所有擴充套件方法可能都不會用到。
如果真是這樣,就當作乙個「漫無邊際」的想法來看好了。如果你根本不想浪費你的寶貴時間,就點這裡redirect回主頁,呵呵
乙個 redirect 為什麼也可以耗費一篇文章的筆墨?
就 redirect 一詞成文的先例估計不會是我,但如果 擴充套件方法 + redirect 這個話題,我可能就是第一人了
。葫蘆裡賣的是什麼藥?
這個「漫無邊際」的想法實現的效果是:
如果頁面是foo.aspx,
public不懂 asp.net mvc 的朋友也沒關係,因為本文實際上跟 asp.net mvc 完全沒關係,跟稍後講 webform 的 view 擴充套件方法也完全是沒有任何一點關係,僅是方法名相同而已。actionresult index()
); return redirecttoaction("actionname");
}
如何實現?
對於最簡單的情況:頁面在根目錄,就直接根據類名 + ".aspx"返回就可以了
}但如果是多層目錄:
如何根據型別來返回我們需要的頁面 url 呢?那麼我們得變通一下才行。怎麼變通?就是把命名空間也扯上來:
例如這裡home資料夾裡的index.aspx 頁面後台的命名空間是 redirecttests.views.home,就根據這個命名空間和類名來拼裝出 "~/views/home/index.aspx" 還不簡單嘛。
示例**:
}以上**限制路徑只能在 views 資料夾下了,有興趣的朋友不妨改改。
如何為 url 新增查詢字串?
啥?這也是乙個問題?我見過不少朋友寫查詢字串時基本上是這樣寫的:
string url = "~/foo.aspx?param1=" + value1 + "¶m2=" + value2 ...;或者,想寫美觀一點的朋友就這樣寫:
string url = string.format( "~/foo.aspx?param1=¶m2=" , value1, value2);當查詢字串比較長時,那可就有些亂了。個人覺得以asp.net mvc 那種形式來書寫很不錯,這就產生另乙個「漫無邊際」的想法,請看下面的寫法:
this.url(new );當然,執行效率肯定稍遜一籌啦,因為用了反射(題外話,其實大家可以不必聞「射」喪膽,老趙的關於快速反射的開源專案很好很強大)。
拼裝查詢字串
///
///
///
///
public static string toquerystring(this t model)
); if (sb.length > 0)
}return sb.tostring();
}/// ///
url編碼
}以上**關於 url 編碼的部分,你可以看到如果是datetime型別轉字串時,這裡進行特定格式的轉化。因為如果不這樣轉化,當獲取這個datetime型別時,不能保證能從字串轉回正確的datetime。
那麼,有了上面介紹,自然而然一堆擴充套件方法就呼之欲出了:
結束?當然沒結束。以上的 url 返回的只能是.aspx的頁面,那麼ihttphandler 的情況呢?
string handlerurl = this.url();
最終也可以實現以上效果,但是url 方法就要適當改改了,這裡我就不再貼**了。總結:最後還是要說的是,這是乙個「漫無邊際」的想法。
如果想看其他不那麼「漫無邊際」的文章,下面有另外幾篇
:擴充套件方法 之 基本資料篇
擴充套件方法 之 asp.net篇
擴充套件方法、介面和繼承帶來的有趣現象
ThinkPHP的redirect方法總結
首先我們大家都知道,redirect 是起到重定向的作用的乙個函式。我們需要注意在它使用的過程中的一些易錯點。下面是它的兩種使用方法 為了方便我直接從官網中複製過來了 重定向到new模組的category操作 this redirect new category array cate id 2 5,...
Django之redirect實現原理
又稱為客戶端重定向 該方法通過修改http協議的header部分,對瀏覽器下達重定向指令的,讓瀏覽器對在location中指定的url提出請求,使瀏覽器顯示重定向網頁的內容。該方法可以接受絕對的或相對的urls。如果傳遞到該方法的引數是乙個相對的url,那麼web container在將它傳送到客戶...
forward與redirect之區別
forward方式 request.getrequestdispatcher somepage.jsp forwardrequest,response redirect方式 response.sendredirect somepage.jsp forward是伺服器內部重定向,程式收到請求後重新定向...