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

來源:互聯網
上載者:User

標籤:style   blog   class   code   java   color   

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

聯繫我們

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