今天開始第一天學習asp.net mvc,寫的不是很好,高手不要噴,希望大家能一起進步學習。
好了,開始學習
新建項目,選擇mvc 4應用程序
接下來選擇基本,視圖引擎當然要選擇Razor,如果在選擇aspx那我們就沒必要用mvc嘍
在這里我們簡單說一下,項目模板如果選擇空,這就需要我們自己進行導入很多文件,而選擇基本vs會自動導入需要的文件,對mvc不熟的人,還是先老實一點吧。
后面兩個Internet、Intranet一個是網絡web,一個是內網的。沒有用過,也不是很了解。移動選項應該是開發手機相關的,api是提供第三方的接口使用的(類似于web service,輕量級)。
點擊確定,vs會給我們導入好多文件。好奇一下,可以看一下項目文件夾下的packages的文件夾,里面好多文件啊,包括我們之前學習的ef,還有最重要我們將要學習的mvc庫。
看一下解決方案資源管理器
其中App_Data沒有太大的用處,主要是可以將數據庫放入其中,該文件夾下的內容是不準請求訪問的。可刪除
App_Start是網站啟動的時候用到的一些配置信息文件,里面有個路由文件相對重要一些。這里面的內容在全局文件中會依次調用的。
?簡單的分析一下路由的配置,看下RouteConfig.cs里面的內容


1 public static void RegisterRoutes(RouteCollection routes) 2 { 3 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 4 5 routes.MapRoute( 6 name: "Default", 7 url: "{controller}/{action}/{id}", 8 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 9 ); 10 }
下面是我的請求
因為我沒有寫全路徑,所以請求的是默認路徑,那為什么報錯了呢?那是因為我還沒有寫默認配置的home控制器和index方法。現在我們將該控制器和方法寫好。
在Controlllers文件夾下添加控制器Home,注意控制器名稱必須以Controller結尾
下面是vs給我們自動生成好的代碼,遺憾的是vs只給我們生成了默認的index方法,但是沒有給我們生成視圖。控制器必須要繼承自Controller


1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 7 namespace MvcApplication1.Controllers 8 { 9 public class HomeController : Controller 10 { 11 // 12 // GET: /Home/ 13 14 public ActionResult Index() 15 { 16 return View(); 17 } 18 19 } 20 }
我們在index方法上點擊右鍵添加視圖便可以添加視圖了。但我先不這樣做,我要改寫這個方法,為了是先簡化學習。稍后再學習視圖部分。下面是我改后的方法,怎么樣,很簡單吧。


1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 7 namespace MvcApplication1.Controllers 8 { 9 public class HomeController : Controller 10 { 11 // 12 // GET: /Home/ 13 14 public string Index() 15 { 16 return "The first mvc"; 17 } 18 19 } 20 }
現在我們再用剛才報錯那個地址訪問以下吧,怎么樣?結果出來了吧!
當然這個地址是默認配置的,標準的我們應該訪問的是localhost:4348/home/index 這個地址。怎么樣,哈哈,我們終于甩掉aspx這個恨人的尾巴了。
其實mvc會根據url路徑去與配置的路由匹配。會將localhost:4348/home/index地址分拆,home匹配控制器,index匹配方法,我們不妨試試,如果你將HomeController改掉,這時訪問就會報錯了。我們也可以將路由配置中的url: "{controller}/{action}/{id}"中的controller與action調換一下,改為url: "{action}/{controller}/{id}",訪問一下,是不是又出錯了呢?因為這個路由解析地址的時候就會將Home當做方法index當成控制器,這樣當然會報錯了,但我們可以講url訪問地址寫成localhost:4348/index/home,這樣仍然可以訪問了,是不是有些明白了呢?
剛從aspx那轉過來的,可能這里不太好理解。畫張圖,簡單理解一下
?
上面的方法中我返回了一個字符串,這就像我們aspx中的一般處理程序一樣,所有的html代碼都要自己寫才能返回瀏覽器,而后面要學習的視圖(項目中的Views文件夾下)就是html代碼了。下面我們來看一下視圖吧,我們在home控制器中添加一個test方法
1 public ViewResult test() 2 { 3 return View(); 4 }
?可以選擇手動或自動兩種方式添加視圖,先介紹手動的方式,既然test方法是在home控制器中,所以在views文件夾中添加一個home文件夾,所有控制器中的方法視圖都要views文件夾下相應的控制器名稱文件下。在Views/Home/下添加視圖,注意,視圖名稱約定要與方法名一樣。之后會介紹怎么可以使方法與視圖名稱不一樣。
下面就是vs自動生成的視圖文件。
我們也可以選擇自動生成視圖的方法,那就是在方法名稱上右鍵添加視圖,同樣可以生成視圖文件,效果是一樣的。


1 @{ 2 Layout = null; 3 } 4 5 <!DOCTYPE html> 6 7 <html> 8 <head> 9 <meta name="viewport" content="width=device-width" /> 10 <title>test</title> 11 </head> 12 <body> 13 <div> 14 15 </div> 16 </body> 17 </html>
?
生成的文件名是cshtml后綴,奇怪吧。修改一下內容,然后訪問一下吧。


@{Layout = null; }<!DOCTYPE html><html> <head><meta name="viewport" content="width=device-width" /><title>test</title> </head> <body><div>The first view of mvc</div> </body> </html>
好了,今天就這樣吧,簡單介紹一下,下面將要介紹razor視圖引擎的語法。