文章出處

MVC全稱是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種軟件設計典范,用一種業務邏輯和數據顯示分離的方法組織代碼,將業務邏輯被聚集到一個部件里面,在界面和用戶圍繞數據的交互能被改進和個性化定制的同時而不需要重新編寫業務邏輯。MVC是一種具有可測試性和易于維護的應用程序開發模式。

基于MVC的應用程序應該包含以下內容:
•模型:表示應用程序核心,是該應用程序中用來進行校驗、執行業務邏輯的數據類,業務實體對象。

•視圖:表示顯示數據,是應用程序中處理數據顯示的部分,是該應用程序動態生成HTML響應的模板文件。
•控制器:表示處理輸入,是應用程序中處理用戶交互的部分,是該應用程序處理瀏覽器傳入的請求,從數據庫中讀取數據,然后指定視圖模板返回給瀏覽器的響應。

創建我的第一個控制器類

首先,在Visual stdio中的“解決方案資源管理器”中,選中Controllers”文件夾,單擊右鍵,在彈出菜單中選擇“添加-->控制器”。如下圖。

 

其次,Visual Studio會彈出的“添加控制器”對話框,在對話框的“控制器名稱”文本框中輸入“HelloWorldController”,在“模板”下拉框中選擇默認模板“空MVC控制器”,然后單擊“添加”。如下圖。

 

 

第三,當鼠標點擊“添加”之后,Visual Studio會創建一個.cs文件 ,文件名為HelloWorldController.cs。如下圖。

 

 

第四,用下面的代碼替換文件中的默認代碼。

 

public class HelloWorldController : Controller
    {
        //
        // GET: /HelloWorld/
        public string Index()

        {

            return "這是我的一個歡迎您來到ASP.NET MVC世界的 <b>控制器</b>的默認方法 !!!";

        } 

        //
        // GET: /HelloWorld/Welcome/
        public string Welcome()

        {

            return "這是一個歡迎您來到ASP.NET MVC世界的控制器中的指定方法...";

        }     
    }

 我的這個控制器中的Index與Welcom方法都只是返回一個字符串。


第五,在填寫完代碼之后,運行應用程序(按F5或Ctrl+ F5)。如下圖。

 

 

Visual Studio會啟動IIS Express,同時運行Visual Studio中Web應用程序,然后Visual Studio會啟動默認瀏覽器并打開應用程序的首頁。在已啟動的瀏覽器的地址欄中的地址后面加上“HelloWorld” (例如,如下圖中,它的http://localhost:36878/HelloWorld)。瀏覽器就會去調用新的頁面,頁面中顯示的內容如下圖。由于我在Index方法中,直接返回的是字符串,所以瀏覽器中顯示的就是我在代碼中所寫的一串中文。

 

 

ASP.NET MVC根據傳入的不同的URL去調用不同的控制器類以及控制器類中的不同的方法。ASP.NET MVC默認的URL路由格式如下:

/[Controller]/[ActionName]/[Parameters]

 

以上格式的URL,其中第一部分決定了由什么控制器類來執行,就本例來說HelloWorld映射到HelloWorldController類。 URL的第二部分決定了要執行的控制器類中的哪個方法,就本例來說HelloWorld/Index會讓HelloWorldController類的Index方法執行。請注意,Index是ASP.NET MVC控制器類的默認方法,如果在沒有指定具體方法的情況下使用,將調用控制器上的默認方法(Index)。
在瀏覽器地址欄中輸入http://localhost:36878/HelloWorld/Welcome,瀏覽器會返回以下字符串“這是一個歡迎你來到ASP.NET MVC世界的控制器的指定方法......”。如下圖。

 

第六,我要通過URL傳遞一些參數給控制器,來看我是如何修改的(例如,/HelloWorld/Welcome?name=dotnet菜園&numtimes=9)。下面的方法是用參數來改變應用程序的輸出內容。代碼如下所示。請注意,該代碼使用C#可選參數的功能,當numTimes沒有參數傳遞過來時,numTimes參數默認為1。

        public string Welcome(string name, int numTimes = 1)

        {

            return HttpUtility.HtmlEncode("歡迎 " + name + string.Format(",第{0}次來到ASP.NET MVC的世界! " , numTimes));

        }
 

 

直接運行程序,會報一個以下錯誤信息。如下圖。原來在ASP.NET MVC的控制器類中默認是不支持方法重載的。如果希望方法重載要使用httpverbs或是重寫actionexcuting方法

 

 

我們把Welcome方法注釋掉,然后按F5來運行應用程序并在瀏覽器中輸入http://localhost:36878//HelloWorld/Welcome?name=dotnet菜園&numtimes=9。您可以輸入不同的name和numtimes值。ASP.NET MVC會自動從URL請求中獲取相應的參數值。

 

在這個例子中,控制器一直在做MVC中的“VC”部分 - 也就是,視圖和控制器的工作。本示例中的控制器直接返回一個HTML字符串。按照MVC的理論來說,控制器不應該直接返回HTML字符串,因為這樣做會讓代碼變得非常繁瑣,具體的呈現方式應該由視圖去做,而不應該由控制器去做,在下一次的文章中再來介紹視圖。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()