asp.net mvc 初次任务-从路由开始认识MVC
2010-01-23 21:16
399 查看
mvc结构和传统的ASP.NET程序一个最大的不同,就是引入了路由的概念。
我们传统的ASP.NET BS程序用地址来访问例如:http://localhost/dfky/index.aspx?id=12或者http://localhost:45456/index.aspx?id=22
这样就可以定位到我们要访问的页面了。而在MVC框架中,我们使用路由来导航页面。
开发新建项目后,根目录下面的Global.asax文件。
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
);
}
这就是对路由的定义。
当程序运行后,Application_Start() 方法被调用,同时调用方法内的RegisterRoutes() 方法。这个方法创建了路由表。
默认的ASP.NET MVC路由表中只含有一个叫做default的路由。这个默认路由把url拆分成三个部分分别对应controller,action和View。
当请求URL:/Home/Index/3时,下列代码执行:HomeController.Index(3)。
如果不指定controller,则默认为Home,不指定Action则默认为Index,不指定参数则默认为空。
我们将通过例子来看一下到底默认路由是怎么把URl映射到controller和action的。想象我们在地址栏中输入了如下URL:
/Home
由于默认action为Index,所以下面的方法被调用
这个方法接受一个字符串类型的id参数,上面的URL执行了这个方法,传入一个空的id。
由于mvc框架引用controller actions的方式,/Home同时也会触发下列事件
这个方法不接受参数,/Home将触发这个Index(),同时/Home/Index/3也会调用这个方法,id参数将被忽略。
/Home也会与下面的方法匹配
该方法接受一个int类型的参数id,因为这个参数可以为null,该方法将被调用而不会产生任何错误。
最后调用下面的方法,这里会引发一个异常
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index(int id)
{
return View();
}
}
}
我们传统的ASP.NET BS程序用地址来访问例如:http://localhost/dfky/index.aspx?id=12或者http://localhost:45456/index.aspx?id=22
这样就可以定位到我们要访问的页面了。而在MVC框架中,我们使用路由来导航页面。
开发新建项目后,根目录下面的Global.asax文件。
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
);
}
这就是对路由的定义。
当程序运行后,Application_Start() 方法被调用,同时调用方法内的RegisterRoutes() 方法。这个方法创建了路由表。
默认的ASP.NET MVC路由表中只含有一个叫做default的路由。这个默认路由把url拆分成三个部分分别对应controller,action和View。
当请求URL:/Home/Index/3时,下列代码执行:HomeController.Index(3)。
如果不指定controller,则默认为Home,不指定Action则默认为Index,不指定参数则默认为空。
我们将通过例子来看一下到底默认路由是怎么把URl映射到controller和action的。想象我们在地址栏中输入了如下URL:
/Home
由于默认action为Index,所以下面的方法被调用
using System.Web.Mvc; namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index(string id) { return View(); } } }
这个方法接受一个字符串类型的id参数,上面的URL执行了这个方法,传入一个空的id。
由于mvc框架引用controller actions的方式,/Home同时也会触发下列事件
using System.Web.Mvc; namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { return View(); } } }
这个方法不接受参数,/Home将触发这个Index(),同时/Home/Index/3也会调用这个方法,id参数将被忽略。
/Home也会与下面的方法匹配
using System.Web.Mvc; namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index(int? id) { return View(); } } }
该方法接受一个int类型的参数id,因为这个参数可以为null,该方法将被调用而不会产生任何错误。
最后调用下面的方法,这里会引发一个异常
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index(int id)
{
return View();
}
}
}
//部分代码引用自51CTO
相关文章推荐
- 认识 ASP.NET 3.5 MVC 路由解析分析
- asp.net mvc的初次任务-项目描述
- 认识 ASP.NET 3.5 MVC 路由解析分析
- 认识 ASP.NET 3.5 MVC 路由 在WebForm项目中使用路由
- 认识 ASP.NET 3.5 MVC 路由 理解默认路由表
- 认识 ASP.NET 3.5 MVC 路由 理解默认路由表
- 认识 ASP.NET 3.5 MVC 路由 创建自定义路由
- 认识 ASP.NET 3.5 MVC 路由 创建自定义路由
- ASP.NET MVC 源码分析(二) —— 从 IRouteBuilder认识路由构建
- 认识 ASP.NET 3.5 MVC 路由 在WebForm项目中使用路由
- asp.net mvc源码分析 - 路由注册
- ASP.NET MVC 路由规则XML化
- asp.net mvc源码分析 - 路由(Routing)
- ASP.NET MVC 加.mvc后缀,传入的请求不与任何路由匹配解决办法
- ASP.NET MVC 的URL路由介绍
- ASP.NET MVC 5-开始MVC5之旅
- ASP.NET MVC5+ 路由特性
- ASP.NET MVC路由配置(转载自http://www.cnblogs.com/zeusro/p/RouteConfig.html )
- ASP.NET MVC学习之路由篇(2)
- Asp.Net MVC 路由