在ASP.NET下做了一個實驗MVC的小東西,希望能得到更多的參考意見

來源:互聯網
上載者:User
星期五下班前一時興起,對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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.