Asp.net Mvc-Url和Route介绍之一

简介:

1,Asp.net mvc 核心是:routes工作原理。

我们首先来谈谈关于urls:以前的urls很不美观,例如:http://test.com//admin/list.aspx?id=2&page=1,就会给人很不美观的感觉啊!

       网路引擎解读id等参数不好啊!

所以我们要养成写url好习惯:

1)域名好记好拼写;

2url尽量短,可读性强。使用位置代替参数比较好啊!这是mvcurl优点之一啊!(3url好输入,可以方便用户好输入;

4url可以体现网站的结构,体现网站的逻辑结构,不体现网站的物理结构;

5url规律性强,用户可以自己猜出网站的构造;

6url固定,并且持续不变啊;

url的作用相当于网站的指挥啊!很重要。

2,Mvcurl下面的路径通常映射到类。

下面是mvc Routing介绍:(1)接受用户输入并指向ControllerAction。(2)把ControllerAction输出成URLs

定义Routes

Route URLsroutes.MapRoutes(“test”,”{one/tow/third}”),

URL的匹配规则:

例如test/{controller}/{action}/{id},

可以匹配到:/test/news/display/1.

但是不能匹配:/news/display/1.

{language}-{contry}/{controll}/{action}

匹配:/Chinese-china/news/display

{controller}.{action}.{id}

匹配:/news.display.12

3,使用默认路由:添加默认匹配路由参数:

1)无参数路由:Public ActionResult List(){return View()} 可以是: /news/list

2)带默认参数路由:Route.MapRoute(“test”,”{controller}/{action}/{id}”,new {id=””,action=”index”});

如果我们不输入id默认为空,不输入Action默认为index。使用逆序的方法写默认值,如果不使用逆序URL将会匹配不上的。

4url约束:就利用到了正则表达式:例如http://test.com/2010/9/29/ 对于的url约束就是:

Routes.MapRoute(“Demo”,”{year}/{month}/{day}”,new {controller=”Demo”,action=”index”},new{year=@”\d{4}”,month=@”\d{2}”,day=@”\d{2}”});

路由的匹配顺序是按照添加的顺序匹配的。

5,注册AreaRoute

Public static void RegisterRoutes(RouteCollcetion routes)

{

       routes.IgnoreRoute(“{resource}.axd/{*pathinfo}”);

       AresRegistration.RegisterAllAreas();

       Route.MapRoute(“default”,”{controller}/{action}/{id}”,new {controller=”home”,action=”index”,id=””});

}

注册了全区域的路由。

6AreaRoute冲突:

如何处理冲突:

1,可以使用不同的路由命名;

2,可以添加相应的namespace。例如:

Routes.MapRoute{“default”,”{controller}/{action}/{id}”,new {controller=”home”,action=”Index”,id=””},new[]{“DemoWeb.Controllers”}}

使用DemoWeb.Controllers命名空间。

7,捕获所有参数:让route匹配任意多参数,可以使用“*”来匹配,

例如:routes.MapRoute(“CatchAllRoute”,”query/{queryname}/{*extrastuff}”,new QueryRouteHandler);

*extrastuff将会匹配query/{queryname}/后的任意多参数。不管什么字符都能匹配上。

8,停止匹配和忽略匹配:Routes.add(new Route(“{resource}.axd/{*pathinfo}”,new StopRoutingHandler()));

Routes.IgnoreRoute({resource}.axd/{*pathinfo}”);

使用停止匹配还会占有系统资源,使用忽略匹配将会跳过相应的路由,所以我们推荐使用忽略路由。

9,调试路由信息。使用Routing Debugger(第三发路由调试工具),首先我们下载此工具:下载地址:http://code.hacked.com/mvc-1.0/RouteDebug-Binary.zip

放到bin中,发布时要删除它。

Protected void Application_Start(){

RoteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);

}

以上是UrlRoutes介绍。




 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/399253,如需转载请自行联系原作者

相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
42 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
100 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
124 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
52 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
107 0
|
8月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(六)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情,购物车等功能的开发,今天继续讲解订单管理功能开发,仅供学习分享使用,如有不足之处,还请指正。
215 0