天天看點

ASP.NET MVC 5 學習教程:添加控制器

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-controller">添加控制器</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-view">添加視圖</a>

<a href="http://www.qeefee.com/mvc/mvc-5-changing-views-and-layout-pages">修改視圖和布局頁</a>

<a href="http://www.qeefee.com/mvc/mvc-5-passing-data-from-the-controller-to-the-view">控制器傳遞資料給視圖</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-model">添加模型</a>

<a href="http://www.qeefee.com/mvc/mvc-5-creating-a-connection-string">建立連接配接字元串</a>

<a href="http://www.qeefee.com/mvc/mvc-5-accessing-your-models-data-from-a-controller">通過控制器通路模型的資料</a>

<a href="http://www.qeefee.com/mvc/mvc-5-examining-the-generated-code">生成的代碼詳解</a>

<a href="http://www.qeefee.com/mvc/mvc-5-working-with-localdb">使用 SQL Server LocalDB</a>

<a href="http://www.qeefee.com/mvc/mvc-5-examining-the-edit-methods-and-edit-view">Edit方法和Edit視圖詳解</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-search">添加查詢</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-a-new-field">Entity Framework 資料遷移之添加字段</a>

<a href="http://www.qeefee.com/mvc/mvc-5-adding-validation">添加驗證</a>

<a href="http://www.qeefee.com/mvc/mvc-5-examining-the-details-and-delete-methods">Details 和 Delete 方法詳解</a>

MVC代表了模型-視圖-控制器。MVC是一個架構良好,可測試性和易于維護的應用程式開發模式。基于MVC模式的應用程式包含:

模型:模型類代表了應用程式中的資料,為強制執行業務規則使用了資料邏輯驗證。

視圖:應用程式中的視圖模闆檔案用來動态生成HTML響應。

控制器:控制器類處理傳入的浏覽器請求,擷取模型資料,然後指定視圖模闆,将響應傳回給浏覽器。

我們将在本教程系列涵蓋了所有這些概念,并告訴你如何使用它們來建構應用程式。

首先,讓我們建立一個控制器類。在“解決方案資料總管”中,右鍵“Controllers”檔案夾,然後選擇“添加”&gt;“支架”:

圖1:添加控制器的菜單

ASP.NET MVC 5 學習教程:添加控制器

在添加支架對話框中,選擇“MVC 5 Controller - Empty”,然後單擊“添加”按鈕:

圖2:添加支架對話框

ASP.NET MVC 5 學習教程:添加控制器

在Controller Name中輸入“HelloWorldController”,單擊“Add”按鈕:

圖3:添加控制器對話框

ASP.NET MVC 5 學習教程:添加控制器

此時在“解決方法資料總管”中已經建立了檔案 HelloWorldController.cs。該檔案在IDE中是打開的。

圖4:HelloWorldController.cs

ASP.NET MVC 5 學習教程:添加控制器

使用以下代碼替換檔案内容:

代碼清單1:HelloWorldController.cs

控制器方法将傳回一個HTML字元串作為例子。控制器名為 HelloWorldController,上面的第一個方法名為 Index,讓我們在浏覽器中調用一下看:運作應用程式(按F5 或 CTRL+F5),在浏覽器位址欄中追加“HelloWorld”(例如,在下面的圖5中,位址欄内容為localhost:2264/HelloWorld)。浏覽器中的頁面效果如圖5:

圖5:浏覽器中檢視 HelloWorld

ASP.NET MVC 5 學習教程:添加控制器

ASP.NET MVC 根據傳入的URL調用不同的控制器(還有不同的操作方法),ASP.NET MVC 預設的路由規則決定了調用那些代碼:

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

你可以在 App_Start/RouteConfig.cs 檔案中設定路由格式。

代碼清單2:預設路由代碼

在代碼清單2中,當你運作程式,且不提供任何URL片段的時候,預設調用 Home 控制器的 Index 方法。

URL第一部分決定了要調用的控制器,/HelloWorld 對應的是 HelloWorldController 類。第二部分決定了被調用的Action方法,是以 /HelloWorld/Index 引發調用了HelloWorldController 類的Index 方法。雖然我們浏覽的位址是/HelloWorld,但是Index方法是預設的Action,是以Index方法會被調用。URL的第三部分是資料部分,我們将在後面的章節中介紹路由資料。

浏覽位址: http://localhost:xxxx/HelloWorld/Welcome,Welcome方法被執行,傳回字元串“This is the Welcome action method...”。MVC的預設映射是 <code>/[Controller]/[ActionName]/[Parameters]</code>。對于這個URL,控制器是HelloWorld,Welcome 是執行的方法。我們還沒有在位址中使用<code>[Parameters]</code>部分。

圖6:浏覽器中檢視Welcome

ASP.NET MVC 5 學習教程:添加控制器

讓我們稍微修改一下例子,使你能夠從URL中傳遞參數給控制器(例如,/HelloWorld/Welcome?name=Scott&amp;numtimes=4)。修改Welcome方法,讓它包含兩個參數。請注意,該代碼使用C#的可選參數功能,表明的numTimes參數如果參數傳遞,那麼預設為1。修改後的代碼如下:

代碼清單3:修改後的Welcome方法

運作程式,在浏覽器中輸入示例URL(http://localhost:xxxx/HelloWorld/Welcome?name=Scott&amp;numtimes=4)。你可以在URL中為name和numtimes試試不同的值,ASP.NET MVC 模型綁定系統自動将位址中命名的查詢參數映射為方法中的參數。

圖7:浏覽器中檢視帶參數的Welcome

ASP.NET MVC 5 學習教程:添加控制器

在上面的例子中,URL的參數部分沒有用到,參數 name 和 numTimes 是作為查詢字元串傳遞的。

使用下面的代碼替換Welcome方法:

代碼清單4:Welcome方法代碼

運作程式,并浏覽下面的位址: http://localhost:xxx/HelloWorld/Welcome/3?name=Rick

圖8:使用了參數部分的Welcome

ASP.NET MVC 5 學習教程:添加控制器

這次的URL第三部分比對了參數 ID,因為Welcome 方法中有一個參數ID,這個URL正好與RegisterRoutes中的規範比對。此處可以參見代碼清單2中的預設路由規則。

在ASP.NET MVC 應用程式中,像我們使用路由資料傳遞參數,比用查詢字元串傳遞參數更為典型。你還可以定一個路由,通過路由資料使用URL同時傳遞name和numTimes兩個參數。在App_Start\RouteConfig.cs 檔案中,添加一個名為“Hello”的路由:

代碼清單5:添加Hello路由

在浏覽器中檢視位址 localhost:XXX/HelloWorld/Welcome/Scott/3:

圖9:同時傳遞兩個參數

ASP.NET MVC 5 學習教程:添加控制器

在大多數MVC應用程式中,預設的路由都可以很好的工作。你會在本教程的後續章節中學習通過模型綁定傳遞參數,并且你不用修改預設的路由。

在這些例子中,控制器做了MVC中“VC”部分的工作,這說明視圖和控制器工作了。控制器直接傳回了HTML。通常我們不想控制器直接傳回HTML,因為代碼變得非常麻煩。相反,我們通常會使用一個單獨的視圖模闆​​檔案來幫助生成HTML響應。我們會在後面的章節中介紹這些内容。

本文轉自齊師傅部落格園部落格,原文連結:http://www.cnblogs.com/youring2/p/mvc-5-adding-a-controller.html,如需轉載請自行聯系原作者

繼續閱讀