在ASP.NET下做了一個實驗MVC的小東西

來源:互聯網
上載者:User

標籤:blog   http   io   os   使用   ar   sp   div   art   

星期五下班前一時興起,對MVC發表了一點看法。後來就想乾脆弄個小東西來驗證一些自己的想法幫組理清思路。所要原始碼的免了,3個小時的急就章實在是亂得可以,既沒有好的架構,也沒有任何代碼品質可言,主要是實現了對MVC的一點想法。所以拿出來大家給參考一下。申明:不是典型的MVC

 

在這裡我參考了Web.Py的一些做法,首先我們將Url當作一種資源,一個典型的Url,如下:

http://www.x.com/Index/view/2007/10/21

我們將從/Index/Topic/2007/10/21開始的的部分看作是有語義的,這裡將Index映射到Controller類Index,Topic則表示這一次調用的行為,也就是調用Index類的Topic方法。

後面的/2007/10/21則是參數。而這些參數作為View方法的參數被傳遞給Controller,也就是這裡Topic方法可以重載,如果找不到參數相對應的方法就直接調用沒有參數的Topic方法。

Index類被作為Controller,至於View,隨便了,可以直接用StringTemplate或者其他任何模板引擎,圖方便的話直接Redirect到ASPX頁面也行。

使用的方法:

首先Copy SpectraAction.DLL到bin目錄。然後在Web.Config裡添加:

  <configSections>

    <sectionGroup name="SpectraAction">

      <section name="Common" type="System.Configuration.SingleTagSectionHandler"/>

      <section name="Urls" type="System.Configuration.DictionarySectionHandler"/>

    </sectionGroup>

  </configSections>

  <SpectraAction>

    <Common Base="/TestSpectra" DefaultAction="Proccess" Assembly="" />

    <Urls>

      <add key="/index" value="Controller.Index"/>

    </Urls>

  </SpectraAction>

在Url裡面的項就是註冊Url到Controller的映射關係的。Common裡的Base定義了Url的基礎,因為在很多時候在根下有一些目錄比較特殊,為了不影響這些目錄,所以設定了這個參數用來設定一個基礎來避開。所以這裡要從 /TestSpectra之後的部分才開始具備語義。

然後就是實現Controller.Index這個類:

 1namespace Controller

 2{

 3    public class Index:MasterController

 4    {

 5        public Index()

 6        {

 7            //

 8            // TODO: 在此處添加建構函式邏輯

 9            //

10        }

11        public void Proccess()

12        {

13            this.AppendText("Test");

14        }

15        public void Proccess(string A)

16        {

17            this.AppendText("Test"+A);

18        }

19    }

20}

 

最後我們在瀏覽器裡輸入 http://localhost/TestSpectra/Index

這個時候輸出 Test 因為設定了預設的行為,所以自動調用了Proccess方法。

如果輸入 :

http://localhost/TestSpectra/Index/Proccess/ActionA/

這個時候就會調用void Proccess(string A)這個方法,輸出了字串TestActionA

 

就是這個樣子咯,模型的話隨便什麼都行,視圖的話隨便用什麼模板引擎都行 

在ASP.NET下做了一個實驗MVC的小東西

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.