文章來源: Slark.NET-博客園 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html
上一節:ASP.NET MVC 5 入門教程 (2) 控制器Controller
下一節:ASP.NET MVC 5 入門教程 (4) View和ViewBag
源碼下載:點我下載
上一節我們講了如何創建一個控制器,本節我們來討論如何通過路由來訪問控制器及其Action。
那么問題來了,怎么寫url能訪問到我想要訪問的控制器呢?
要想正確訪問路由器,就得知道路由規則。它被寫在解決方案的App_Start文件夾下的RoutConfig.cs文件中。顧名思義,這是路由配置文件。代碼如下。
using System.Web.Mvc; using System.Web.Routing; namespace SlarkInc { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
代碼中標記出的兩行就是路由規則的關鍵所在。
第一行的意思是通過 “http://主機名:端口號/控制器名/Action名/參數id” 可以調用這個控制器的Action並且這個Action帶有參數id。
我們先來創建一個這樣的控制器。
打開解決方案下的Controllers文件夾下的FirstController.cs文件。寫入如下代碼。
using System.Web.Mvc; namespace SlarkInc.Controllers { public class FirstController : Controller { public string Index(string id) { return "This is first controller index page.<br/> Your Id is " + id; } public string Another() { return "This is first controller another page"; } } }
代碼中標記的部分就是我們想要訪問的Action。
按F5啟動程序。
我們要訪問的是First控制器下的Index Action並且參數是id。
代入公式:“http://主機名:端口號/控制器名/Action名/參數id”
得 http://localhost:57231/first/index/2
結果如下:
Ok。
下面來看RoutConfig.cs文件標記出的第二行。如下:
url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
第二行的意思是如果不寫controller那么controller就默認是Home。確定controller之后如果不寫action則action就默認是Index。id = UrlParameter.Optional表示id可以有也可以沒有。比如調用First控制器的Index Action時就有參數,此時寫上id。如果調用First控制器的Another Action,沒有參數就不寫。
那么url就是這樣: http://localhost:57231/first/another
運行結果如下:
現在我想讓程序一啟動就顯示FirstController的Index Action,這樣測試起來方便。怎么辦?
把FirstController 和Index Action都設成默認就行啦。
url: "{controller}/{action}/{id}", defaults: new { controller = "First", action = "Index", id = UrlParameter.Optional }
運行結果如下。id沒給,所以是null,這里就沒有Id:
下一步我們就可以着手創建View啦。