新聞中心
這里,我們將學(xué)習(xí)到mvc中一個重要的特性即asp.net routing。這個模塊用來把用戶的請求映射到特定的mvc controller actions,看完這篇將可以知道標(biāo)準(zhǔn)路由表是怎么把請求映射到controller action的。

婺源網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,婺源網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為婺源上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的婺源做網(wǎng)站的公司定做!
使用默認ASP.NET MVC路由表
當(dāng)創(chuàng)建好一個mvc應(yīng)用后,應(yīng)用已經(jīng)被配置好可以用asp.net routing了。ASP.NET MVC路由在兩個地方被激發(fā)。
一、asp.net routing在web.config中被激活,有關(guān)route的配置有四個配置節(jié):system.web.httpModules , system.web.httpHandlers , system.webserver.modules, the system.webserver.handlers,刪除這些配置節(jié)時要小心,因為沒有它們routing將不再工作。
二、更重要的是,在global.asax文件中已經(jīng)創(chuàng)建了路由表,global.asax是一個包含了asp.net應(yīng)用生命周期內(nèi)事件句柄的特殊文件。路由表在Application Start 事件中被創(chuàng)建。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using System.Web.Routing;
- namespace MvcApplication1
- {
- // Note: For instructions on enabling IIS6 or IIS7 classic mode,
- // visit http://go.microsoft.com/?LinkId=9394801
- public class MvcApplication : System.Web.HttpApplication
- {
- public static void RegisterRoutes(RouteCollection routes)
- {
- routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- routes.MapRoute(
- "Default", // Route name
- "{controller}/{action}/{id}", // URL with parameters
- new { controller = "Home", action = "Index", id = "" } // Parameter defaults
- );
- }
- protected void Application_Start()
- {
- RegisterRoutes(RouteTable.Routes);
- }
- }
- }
當(dāng)程序運行后,Application_Start() 方法被調(diào)用,同時調(diào)用方法內(nèi)的RegisterRoutes() 方法。這個方法創(chuàng)建了路由表。
默認的ASP.NET MVC路由表中只含有一個叫做default的路由。這個默認路由把url拆分成三個部分分別對應(yīng)controller,action和View。
當(dāng)請求URL:/Home/Index/3時,下列代碼執(zhí)行:HomeController.Index(3)。
如果不指定controller,則默認為Home,不指定Action則默認為Index,不指定參數(shù)則默認為空。
我們將通過例子來看一下到底默認路由是怎么把URl映射到controller和action的。想象我們在地址欄中輸入了如下URL:
/Home
由于默認action為Index,所以下面的方法被調(diào)用
- using System.Web.Mvc;
- namespace MvcApplication1.Controllers
- {
- [HandleError]
- public class HomeController : Controller
- {
- public ActionResult Index(string id)
- {
- return View();
- }
- }
- }
這個方法接受一個字符串類型的id參數(shù),上面的URL執(zhí)行了這個方法,傳入一個空的id。
由于mvc框架引用controller actions的方式,/Home同時也會觸發(fā)下列事件
- using System.Web.Mvc;
- namespace MvcApplication1.Controllers
- {
- [HandleError]
- public class HomeController : Controller
- {
- public ActionResult Index()
- {
- return View();
- }
- }
- }
這個方法不接受參數(shù),/Home將觸發(fā)這個Index(),同時/Home/Index/3也會調(diào)用這個方法,id參數(shù)將被忽略。
/Home也會與下面的方法匹配
- using System.Web.Mvc;
- namespace MvcApplication1.Controllers
- {
- [HandleError]
- public class HomeController : Controller
- {
- public ActionResult Index(int? id)
- {
- return View();
- }
- }
- }
該方法接受一個int類型的參數(shù)id,因為這個參數(shù)可以為null,該方法將被調(diào)用而不會產(chǎn)生任何錯誤。
***調(diào)用下面的方法,這里會引發(fā)一個異常
- using System.Web.Mvc;
- namespace MvcApplication1.Controllers
- {
- [HandleError]
- public class HomeController : Controller
- {
- public ActionResult Index(int id)
- {
- return View();
- }
- }
- }
因為這個參數(shù)是不可以為null的。以上就介紹了ASP.NET MVC路由的使用方法。
【編輯推薦】
- 淺析ASP.NET中的URL Rewrite
- 淺談ASP.NET MVC框架
- 介紹ASP.NET MVC中的MvcAjaxPanel
- ASP.NET MVC框架拯救UpdatePanel
- 用ASP.NET MVC源代碼尋找解決方案
分享文章:學(xué)習(xí)ASP.NETMVC路由的使用方法
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/dhgdede.html


咨詢
建站咨詢
