概述html
建立第一個項目前端
添加控制器web
總結編程
本教程是我的一步一步學習的總結,但願能幫到正在進入ASP.Net MVC5方向的朋友,我的也是準備進入ASP.NET MVC5領域,雖然艱辛,可是樂此不彼。誰讓咱喜歡編程呢?以前接觸過ASP.NET MVC4,今天在看發現差異仍是有的,不論是使用IDE建立方式,仍是使用方式有些地方的確不同了。手上也沒有ASP.NET MVC5的教程,只能看着英文網站,一步一步摸索了。其實我是一直想使用mvc,可事與願違啊,到目前仍是使用的webform。瀏覽器
使用IDE:VS2013前端框架
建立項目,步驟以下,首先看看傳說中的ASP.NET MVC是個什麼樣子。其餘的知識穿插在項目中講解。服務器
建立MVC項目,你能夠選擇MVC或者Empty,選擇MVC會建立一坨東西包括Bootstrap前端框架,本人機子是老爺機,很是的卡,因此我選擇了Empty,建立的速度快一點。沒辦法啊,就算老爺機也得學習啊。架構
選擇Empty建立的項目結構以下:mvc
項目簡單介紹app
RouteConfig.cs:路由規則配置類(記得以前的版本彷佛是在Global.asax文件中的)。
1 public class RouteConfig 2 { 3 /// <summary> 4 /// 註冊路由的方法 5 /// </summary> 6 /// <param name="routes">路由集合,既然是集合確定能添加多個路由規則,這部分在以後會介紹。</param> 7 public static void RegisterRoutes(RouteCollection routes) 8 { 9 //忽略給定可用路由列表的指定URL路由 10 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 11 //路由映射,映射指定的URL路由並設置默認路由值 12 routes.MapRoute( 13 name: "Default",//要映射的路由的名稱。 14 url: "{controller}/{action}/{id}",//路由的 URL 模式。{控制器}/{操做}/{參數} 15 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 16 ); 17 } 18 }
那麼如今Global.cs變成什麼了呢?
1 public class MvcApplication : System.Web.HttpApplication 2 { 3 /// <summary> 4 /// 應用程序開始方法 5 /// </summary> 6 protected void Application_Start() 7 { 8 //註冊應用程序中的全部區域 9 AreaRegistration.RegisterAllAreas(); 10 //註冊路由 11 RouteConfig.RegisterRoutes(RouteTable.Routes); 12 } 13 }
基礎知識
MVC的全稱爲model-view-controller(模型-視圖-控制器)。MVC是一種開發應用程序的模式,這個模式已經具備了很好的框架架構,而且十分容易維護。使用MVC開發出來的應用程序通常包括如下幾塊內容:
• 控制器(Controller):控制器類處理客戶端向Web應用程序發出的請求,獲取數據,並指定返回給客戶端,用來顯示處理結果的視圖。
• 模型(Model):模型類表明了應用程序的數據,這些數據一般具備一個數據驗證邏輯,用來使得這些數據必須符合業務邏輯。
• 視圖(View):視圖類是Web應用程序中用來生成並顯示HTML格式的服務器端對客戶端請求的響應結果的模板文件。
添加一個控制器
是否是被嚇着了,這麼多方式,的確很震撼。先從空控制器開始吧,之後用到其餘的再慢慢介紹。
注意添加控制器名稱必須注意,控制器名稱必須以Controller結尾,要問爲啥,感受跟Attribute特性同樣,規定!新手入門級別就不探討這個了。添加一個IndexController。
看一看項目結構有什麼變化?
是的,正如上圖紅框所示,添加一個控制器,默認會一塊兒在視圖中建立一個名字(假如這樣命名控制器——名字+Controller)相同的文件夾。
進入IndexController.cs
1 public class IndexController : Controller 2 { 3 // 4 // GET: /Index/ 5 public ActionResult Index() 6 { 7 return View(); 8 } 9 }
咱們修改一下IndexController中的代碼,以下:
1 public class IndexController : Controller 2 { 3 // 4 // GET: /Index/ 5 public string Index() 6 { 7 return "This is my <b>default</b> action..."; 8 } 9 // 10 // GET: /HelloWorld/Welcome/ 11 12 public string Welcome() 13 { 14 return "This is the Welcome action method..."; 15 } 16 }
在例子中,控制器方法返回一個html字符串。讓咱們在瀏覽器中訪問控制器IndexController的第一個方法Index(),直接按F5運行。
http://localhost:4585,而後在該地址後面拼上/Index,http://localhost:4585/Index,在瀏覽器中的頁面看起來就像下圖所示的同樣。在上述方法中,代碼直接返回了一個字符串。
ASP.NET MVC根據輸入的URL調用不一樣的控制器類(或者其中的不一樣的方法)。ASP.NET MVC默認URL路由邏輯採用以下的格式來肯定什麼樣的代碼被調用:
/[Controller]/[ActionName]/[Parameters]
你能夠在app_start / routeconfig.cs路由設置中設置文件格式。
1 public class RouteConfig 2 { 3 /// <summary> 4 /// 註冊路由的方法 5 /// </summary> 6 /// <param name="routes">路由集合,既然是集合確定能添加多個路由規則,這部分在以後會介紹。</param> 7 public static void RegisterRoutes(RouteCollection routes) 8 { 9 //忽略給定可用路由列表的指定URL路由 10 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 11 //路由映射,映射指定的URL路由並設置默認路由值 12 routes.MapRoute( 13 name: "Default",//要映射的路由的名稱。 14 url: "{controller}/{action}/{id}",//路由的 URL 模式。{控制器}/{操做}/{參數} 15 defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional } 16 ); 17 } 18 }
當你運行應用程序,默認會執行「Index」控制器中的「Index」方法。若是訪問Index控制器下的Welcome方法,能夠這樣修改,
1 public class RouteConfig 2 { 3 /// <summary> 4 /// 註冊路由的方法 5 /// </summary> 6 /// <param name="routes">路由集合,既然是集合確定能添加多個路由規則,這部分在以後會介紹。</param> 7 public static void RegisterRoutes(RouteCollection routes) 8 { 9 //忽略給定可用路由列表的指定URL路由 10 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 11 //路由映射,映射指定的URL路由並設置默認路由值 12 routes.MapRoute( 13 name: "Default",//要映射的路由的名稱。 14 url: "{controller}/{action}/{id}",//路由的 URL 模式。{控制器}/{操做}/{參數} 15 defaults: new { controller = "Index", action = "Welcome", id = UrlParameter.Optional } 16 ); 17 } 18 }
若是直接按F5運行應用程序,會獲得下圖所示的結果:
如今,讓咱們修改一下welcome方法,給他兩個參數,string和int類型的參數。
1 public string Welcome(string name = "Wolfy", int age = 23) 2 { 3 return HttpUtility.HtmlEncode("您好" + name + ",你今年是否是" + age.ToString()+"?"); 4 }
給上述代碼返回值進行html編碼後返回。而後F5運行。
那麼如今經過url修改參數的值,url:http://localhost:4585/Index/Welcome?name=zhangsan&age=34
有沒有辦法讓url的參數按照咱們想要的格式輸入呢?把法是有的,能夠經過添加路由規則:
若是參數以這種格式輸入http://localhost:4585/Index/Welcome/lisi/30,
這裏介紹了使用控制器中的方法直接返回html,一般這並非咱們想要的。相反,咱們一般會使用一個單獨的視圖模板文件來生成HTML響應。在文章穿插中也簡單介紹了路由的使用。目前,先不要糾結這些東西,先知道怎麼用,以後會深刻介紹每個知識點。