ASP.NET MVC 學習第一天

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   tar   

今天開始第一天學習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         }
View Code

下面是我的請求

因為我沒有寫全路徑,所以請求的是預設路徑,那為什麼報錯了呢?那是因為我還沒有寫預設配置的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 : Controller10     {11         //12         // GET: /Home/13 14         public ActionResult Index()15         {16             return View();17         }18 19     }20 }
View Code

我們在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 : Controller10     {11         //12         // GET: /Home/13 14         public string Index()15         {16             return "The first mvc";17         }18 19     }20 }
View Code

現在我們再用剛才報錯那個地址訪問以下吧,怎麼樣?結果出來了吧!

當然這個地址是預設配置的,標準的我們應該訪問的是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>
View Code

 

產生的檔案名稱是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>
View Code

好了,今天就這樣吧,簡單介紹一下,下面將要介紹razor視圖引擎的文法。

聯繫我們

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