ASP.NET MVC路由扩展:路由映射
2012-03-26 11:39:19 来源:WEB开发网核心提示: }具体的路由映射依然定义在添加的Global.asax文件中,如下面的代码片断所示,ASP.NET MVC路由扩展:路由映射(4),我们通过调用RouteTable的Routes属性的MapRoute方法注册了一个采用“{areacode}/{days}”作为URL模板的路由对象,并指定了
}
具体的路由映射依然定义在添加的Global.asax文件中。如下面的代码片断所示,我们通过调用RouteTable的Routes属性的MapRoute方法注册了一个采用“{areacode}/{days}”作为URL模板的路由对象,并指定了默认变量、约束和命名空间列表。
1: public class Global : System.Web.HttpApplication
2: {
3: protected void Application_Start(object sender, EventArgs e)
4: {
5: object defaults = new { areacode = "010", days = 2, defaultCity="BeiJing", defaultDays=2};
6: object constraints = new { areacode = @"0\d{2,3}", days = @"[1-3]{1}"};
7: string[] namespaces = new string[] { "Artech.Web.Mvc", "Artech.Web.Mvc.Html" };
8: RouteTable.Routes.MapRoute("default", "{areacode}/{days}", defaults, constraints, namespaces);
9: }
10: }
如果我们现在在浏览器中访问Default.aspx页面,会得到下图所示的结果,从中我们可以得到一些有用的信息:
与调用RouteCollection的MapPateRoute方法进行路由映射不同的是,这个得到的RouteData对象的RouteHandler属性是一个System.Web.Mvc.MvcRouteHandler对象。
在MapRoute方法中通过defaults参数指定的两个与URL匹配无关的变量(defaultCity=BeiJing;defaultDays=2)体现在RouteData的Values属性中。这意味着如果我们没有在URL模板中为Controller和Action的名称定义相应的变量({controller}和{action}),也可以将它们定义成默认变量。
DataTokens属性中包含一个Key值为Namespaces值为字符数组的元素,我们不难猜出它对应着我们指定的命名空间列表。
三、基于Area的路由映射
对于一个较大规模的Web应用,我们可以从功能上通过Area将其划分为较小的单元。每个Area相当于一个独立的子系统,具有一套包含Models、Views和Controller在内的目录结构和配置文件。一般来说,每个Area具有各自的路由规则(URL模版上一般会体现Area的名称),而基于Area的路由映射通过AreaRegistration进行注册。
AreaRegistration与AreaRegistrationContext
基于Area的路由映射通过AreaRegistration进行注册。如下面的代码片断所示,AreaRegistration是一个抽象类,抽象只读属性AreaName返回当前Area的名称,而抽象方法RegisterArea用于实现基于当前Area的路由注册。
1: public abstract class AreaRegistration
2: {
3: public static void RegisterAllAreas();
4: public static void RegisterAllAreas(object state);
5:
6: public abstract void RegisterArea(AreaRegistrationContext context);
7: public abstract string AreaName { get; }
- ››ASP.NET及JS中的cookie基本用法
- ››ASP.NET获取MS SQL Server安装实例
- ››asp.net实现调用百度pai 在线翻译英文转中文
- ››ASP.NET页面选项进行提示判断
- ››Asp.net定时执行程序
- ››ASP.NET中利用DataList实现图片无缝滚动
- ››ASP.NET验证控件RequiredFieldValidator
- ››ASP.NET中使用System.Net.Mail发邮件
- ››ASP.NET中获取用户控件中控件的ID
- ››ASP.NET中FileBytes写成文件并存档
- ››asp获取毫秒数
- ››asp.net报“INSERT INTO 语句的语法错误解决
更多精彩
赞助商链接