ASP.NET MVC4入門教程(二):添加一個(gè)控制器
MVC代表: 模型-視圖-控制器 。MVC是一個(gè)架構(gòu)良好并且易于測(cè)試和易于維護(hù)的開發(fā)模式。基于MVC模式的應(yīng)用程序包含:
· Models: 表示該應(yīng)用程序的數(shù)據(jù)并使用驗(yàn)證邏輯來(lái)強(qiáng)制實(shí)施業(yè)務(wù)規(guī)則的數(shù)據(jù)類。
· Views: 應(yīng)用程序動(dòng)態(tài)生成 HTML所使用的模板文件。
· Controllers: 處理瀏覽器的請(qǐng)求,取得數(shù)據(jù)模型,然后指定要響應(yīng)瀏覽器請(qǐng)求的視圖模板。
本系列教程,我們將覆蓋所有這些概念,并告訴您如何使用它們來(lái)構(gòu)建應(yīng)用程序。
首先,讓我們創(chuàng)建一個(gè)控制器類。在解決方案資源管理器中,用鼠標(biāo)右鍵單擊控制器文件夾,然后選擇“添加控制器“。
命名新的控制器為“HelloWorldController”。保留默認(rèn)的模板為“Empty MVC controller”,并單擊“ 添加“。
請(qǐng)注意,在解決方案資源管理器中會(huì)創(chuàng)建一個(gè)名為HelloWorldController.cs的新文件。該文件會(huì)被IDE默認(rèn)打開。
用下面的代碼替換該文件中的內(nèi)容。
using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcome action method..."; } } }
在這個(gè)例子中控制器方法將返回一個(gè)字符串的HTML。本控制器被命名HelloWorldController代碼中的第一種方法被命名為Index。讓我們從瀏覽器中調(diào)用它。運(yùn)行應(yīng)用程序(按F5或CTRL + F5)。在瀏覽器的地址欄中輸入路徑“HelloWorld“。(例如,在下面的示例中: http://localhost:1234/HelloWorld)頁(yè)面在瀏覽器中的表現(xiàn)如下面的截圖。在上面的方法中,代碼直接返回了一個(gè)字符串。你告訴系統(tǒng)只返回一些HTML,系統(tǒng)確實(shí)這樣做了!
根據(jù)傳入的URL,ASP.NET MVC調(diào)用不同的控制器類(和它們之中不同的操作方法)。使用ASP.NET MVC默認(rèn)的URL路由邏輯格式,以確定哪些代碼會(huì)被調(diào)用:
第一部分的URL確定那個(gè)控制器類會(huì)被執(zhí)行。因此 /HelloWorld映射到HelloWorldController控制器類。第二部分的URL確定要執(zhí)行控制器類中的那個(gè)操作方法。因此 /HelloWorld/Index,會(huì)使得HelloWorldController
控制器類的Index 方法被執(zhí)行。請(qǐng)注意,我們只需要瀏覽 /HelloWorld路徑,默認(rèn)情況下會(huì)調(diào)用Index方法。如果沒有明確的指定操作方法,Index方法會(huì)默認(rèn)的被控制器類調(diào)用。
瀏覽http://localhost:xxxx/HelloWorld/Welcome。Welcome方法會(huì)被運(yùn)行并返回字符串:"This is the Welcome action method...”。 默認(rèn)的MVC映射為/[Controller]/[ActionName]/[Parameters] 對(duì)于這個(gè)URL,控制器類是HelloWorld,操作方法是Welcome,您還沒有使用過URL的[Parameters] 部分。
讓我們稍微修改一下這個(gè)例子,以便可以使用URL傳遞一些參數(shù)信息給控制器類(例如, /HelloWorld/Welcome?name=Scott&numtimes=4)。改變您的Welcome 方法來(lái)包含兩個(gè)參數(shù),如下所示。需要注意的是,示例代碼使用了C#語(yǔ)言的可選參數(shù)功能,numTimes參數(shù)在不傳值時(shí),默認(rèn)值為1。
public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes); }
運(yùn)行您的應(yīng)用程序并瀏覽此URL(http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)。你可以對(duì)參數(shù)name 和numtimes 嘗試不同的值。 ASP.NET MVC model binding system 會(huì)自動(dòng)將地址欄中URL里的 query string映射到您方法中的參數(shù)。
在這兩個(gè)例子中,控制器一直在做著MVC中“VC”部分的職能。 也就是視圖和控制器的工作。該控制器直接返回HTML內(nèi)容。通常情況下,您不會(huì)讓控制器直接返回HTML,因?yàn)檫@樣代碼會(huì)變得非常的繁瑣。相反,我們通常會(huì)使用一個(gè)單獨(dú)的視圖模板文件來(lái)幫助生成返回的HTML。讓我們來(lái)看看下面我們?nèi)绾文茏龅竭@一點(diǎn)吧。
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之二十一:實(shí)現(xiàn)開放式并發(fā)
本文主要介紹ASP.NET 2.0如何實(shí)現(xiàn)開放式并發(fā)控制,并逐步講解從數(shù)據(jù)訪問層到業(yè)務(wù)邏輯層以及到最終的頁(yè)面是如何一步一步操作的。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之三十九:在DataList的編輯界面里添加驗(yàn)證控件
為了防止用戶非法的輸入,這節(jié)主要介紹如何在編輯數(shù)據(jù)的時(shí)候添加驗(yàn)證控件,以避免出現(xiàn)異常和保證數(shù)據(jù)的完整性。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之一:創(chuàng)建一個(gè)數(shù)據(jù)訪問層
本文主要介紹創(chuàng)建數(shù)據(jù)訪問層的具體步驟,從配置數(shù)據(jù)庫(kù)連接到插入,更新和刪除數(shù)據(jù)的具體實(shí)現(xiàn)方法,希望對(duì)大家有所幫助。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之六:編程設(shè)置ObjectDataSource的參數(shù)值
本文主要介紹在ObjectDataSource控件的Selecting事件中,設(shè)置InputParameters參數(shù),配合業(yè)務(wù)層的查詢方法,以達(dá)到查詢不同數(shù)據(jù)的目的。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之二十七:創(chuàng)建自定義排序用戶界面
本文主要講解ASP.NET 2.0中使用GridView創(chuàng)建自定義排序,主要演示在一組相同類別的數(shù)據(jù)前添加分界行,讓用戶更容易區(qū)分不同組的數(shù)據(jù)。2016-05-05決定何時(shí)使用 DataGrid、DataList 或 Repeater(ASP.NET 技術(shù)文章)
決定何時(shí)使用 DataGrid、DataList 或 Repeater(ASP.NET 技術(shù)文章)...2006-10-10解讀ASP.NET 5 & MVC6系列教程(15):MvcOptions配置
這篇文章主要介紹了ASP.NET 5 MVC6中MvcOptions配置方法,需要的朋友可以參考下2016-06-06