ASP.NET MVC 入门 3、Routing

在一个route中,通过在大括号中放一个占位符来定义( { and } )。当解析 URL的时候,符号"/"和"."被作为一个定义符来解析,而定 义符之间的值则匹配到占位符中。route定义中不在大括号中的信息则作为常量值 。

下面是一些示例URL:

Valid route definitions Examples of matching URL
{controller}/{action}/{id} /Products/show/beverages
{table}/Details.aspx /Products/Details.aspx
blog/{action}/{entry} /blog/show/123
{reporttype}/{year}/{month}/{day} /sales/2008/1/5

通常,我们在Global.asax文件中的Application_Start事件中添加routes,这 确保routes在程序启动的时候就可用,而且也允许在你进行单元测试的时候直接 调用该方法。如果你想在单元测试的时候直接调用它,注册该routes的方法必需 是静态的同时有一个RouteCollection参数。

下面的示例是Global.asax中的代码,演示了添加一个包含两个URL参数action 和 categoryName的Route对象:

public static void RegisterRoutes(RouteCollection routes){    //忽略对.axd文件的Route,也就是和WebForm一样直接去访问.axd文件    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");    routes.MapRoute(        "Category",                                              // Route 的名称        "Category/{action}/{categoryName}",                           // 带有参数的URL        new { controller = "Category", action = "Index", categoryName = "4mvc" }  // 设置默认的参数    );}protected void Application_Start(){    //在程序启动的时候注册我们前面定义的Route规则    RegisterRoutes(RouteTable.Routes);}

在这里我不打算再详细去讲解。以下只是简单的说明一下。

忽略对某类URL的Routing:

//忽略对.axd文件的Route,也就是和WebForm一样直接去访问.axd文件

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

添加约束条件,支持正则表达式。例如我们需要对id参数添加一个必须为数字 的条件:

routes.MapRoute(
  "Default",
  "{controller}/{action}/{id}",
  new {controller="Home",action="Index",id=""},
  new{id=@"[\d]*"}//id必须为数字
);

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, action
, controller
, 参数
, route
, URL不能被Routes匹配
, routing
, 一个
, Routes
url添加参数
,以便于您获取更多的相关知识。

时间: 2024-09-29 19:03:12

ASP.NET MVC 入门 3、Routing的相关文章

ASP.NET MVC入门 8、ModelState与数据验证

ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的 ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在 使用Html.ValidationMessage()的时候,就是从ViewData.ModelState中检测是否 有指定的KEY,如果存在,就提示错误信息.例如在前一篇文章ASP.NET MVC 入门 7.Hellper与数据的提交与绑定中使用到的UpdateModel方法: 我们在View中使用Html.

ASP.NET MVC 入门介绍 (上)

参考文章 ASP.NET MVC Overview. 1. MVC模式 MVC模式是一种软件架构模式.它把软件系统分为三个部分:模型(Model),视图(View)和控制器(Controller).MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,

一起谈.NET技术,ASP.NET MVC 入门介绍 (上)

参考文章 ASP.NET MVC Overview. 1. MVC模式 MVC模式是一种软件架构模式.它把软件系统分为三个部分:模型(Model),视图(View)和控制器(Controller).MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,

ASP.NET MVC 入门介绍 (下)

相关文章:ASP.NET MVC 入门介绍 (上) 接上文,我们来完善验证功能.在System.ComponentModel.DataAnnotations命名空间中,已经有了一些基本的属性类来实现验证功能,只要把这些属性加到Model的字段上就可以了.具体的属性类可以查MSDN, 下面给出一个例子: public class Movie{ [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]public int ID { get;

一起谈.NET技术,ASP.NET MVC 入门介绍 (下)

相关文章:ASP.NET MVC 入门介绍 (上) 接上文,我们来完善验证功能.在System.ComponentModel.DataAnnotations命名空间中,已经有了一些基本的属性类来实现验证功能,只要把这些属性加到Model的字段上就可以了.具体的属性类可以查MSDN, 下面给出一个例子: public class Movie{ [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]public int ID { get;

ASP.NET MVC入门 11、使用AJAX

在ASP.NET MVC beta发布之前,M$就宣布支持开源的JS框架jQuery,然后 ASP.NET MVC beta发布后,你建立一个ASP.NET MVC beta的项目后,你可以在项 目的scripts目录下找到ASP.NET AJAX和jQuery的JS.反正我是比较喜欢jQuery的 ,所以对于M$此举还是挺欣慰的. 废话不多说,我们使用AJAX来实现发表 评论的功能吧.先来看看怎样使用M$的JS框架来进行异步AJAX请求. 首先 ,当然是要引入M$的AJAX框架的JS: <sc

ASP.NET MVC入门 9、Action Filter 与 内置的Filter实现(介绍)

有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支 持这个,ASP.NET MVC允许你创建action过滤器.Action过滤器是自定义的 Attributes,用来标记添加Action方法之前或者Action方法之后的行为到控制器 类中的Action方法中. 一些可能用到Action过滤器的地方有: 日 志,异常处理 身份验证和授权 - 限制用户的访问 输出缓存 - 保 存一个Action的结果 网络爬虫的过滤 本地化 动态Action - 将一个Action注

ASP.NET MVC 入门 7、Hellper与数据的提交与绑定

ASP.NET MVC提供了很多Hellper的方法,Hellper就是一些生成HTML代码的方 法,方便我们书写HTML代码(有一部分的朋友更喜欢直接写HTML代码).我们也可 以利用.NET 3.5的扩展方法来书写我们自己的Hellper. 例如: <%=Html.ActionLink("首页 ","index","Home")%> 生成的HTML代码就是:<a href="/Home/Index">

ASP.NET MVC 入门 6、TempData

ASP.NET MVC的TempData用于传输一些临时的数据,例如在各个控制器Action间传递临时的数据或者给View传递一些临时的数据,相信大家都看过"在ASP.NET页面间传值的方法有哪几种"这个面试题,在ASP.NET MVC中TempData的就是其中的一种传值方法.TempData默认是使用Session来存储临时数据的,TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的.这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Sessi

ASP.NET MVC 入门 5、View与ViewData

view在MVC模式中与用户进行最直接的接触,它负责数据的呈现.这里要注意 一点就是,view只是负责数据的呈现,所以我们应该要尽量让view中不涉及业务 逻辑的处理. 我们来添加一个Blog首页的view.在安装了ASP.NET MVC后 ,我们在添加新项目的时候可以看到有MVC的view模板: 注:如果你的是中文版的VS,安装完后可能会出现找不到这个模板的现 象,你可以参考在中文版VS 08中安装MVC这篇文章设置一下. 其中MVC View Content Page是有母版页的.我们在Vi