學習ASP.NET MVC(二)——個人第一個ASP.NET MVC 控制器

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

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

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

瀏覽器

建立個人第一個控制器類測試

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

 

其次,Visual Studio會彈出的「添加控制器」對話框,在對話框的「控制器名稱」文本框中輸入「HelloWorldController」,在「模板」下拉框中選擇默認模板「空MVC控制器」,而後單擊「添加」。以下圖。設計

 

 

第三,當鼠標點擊「添加」以後,Visual Studio會建立一個.cs文件 ,文件名爲HelloWorldController.cs。以下圖。code

 

 

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

 

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)。以下圖。blog

 

 

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字符串,由於這樣作會讓代碼變得很是繁瑣,具體的呈現方式應該由視圖去作,而不該該由控制器去作,在下一次的文章中再來介紹視圖。

相關文章
相關標籤/搜索