转载

ASP.Net MVC 之路由

本系列目录: ASP.NET MVC4入门到精通系列目录汇总

Routing(路由) – URL

url 作为广泛使用的Web用户接口,需要被重视

好的Url应该满足如下条件:

  • URL应为获取某种资源提供信息,不一定是物理文件路径
  • 简短易于记忆和拼写输入
  • 可以反映出站点结构
  • 应该是【可拆分】,用户移除末尾,进而获得更高层次信息
  • 持久、不应改变

下面两种url哪种你更喜欢呢?

http://www.cnblogs.com/jiekzou/1.html

http://www.cnblogs.com/jiekzou/1

如果是后者,那服务器怎么识别呢?

ASP.NET MVC 使用路由机制完成由url到具体调用方法的映射过程

注:传统上,url代表服务器磁盘上的物理文件

Routing(路由)的作用

匹配传入的请求(不匹配服务器物理文件),并将请求映射到【控制器】的具体操作【Action方法】和 【参数】

调用并执行对应控制器类的Action方法

Global.asax.cs文件中定义了路由的识别规则

   Routes.MapRoute(   "Default", // 1.路由名称   "{controller}/{action}/{id}", // 2.带有参数的URL    new {     controller = "Home",     action = "Index",     id = UrlParameter.Optional   } // 3.参数默认值 ); 

注: {controller}和{action} 是特定参数名,不能改

RequestContext.RouteValueDictionary

SEO:Search Engine Optimization

Routing(路由)包含字面值的URL

路由URL在段中也允许包含【字面值】,如:

/jiekzou/{controller}/{action}/{id}

规定第一个段必须以 jiekzou 开头,才能与该路由匹配,如:

/jiekzou/home/index/1

URL中可以字面量和参数混合在一期,如:

注:不能有两个连续的url参数 :{controller}{action}-{id}

路由约束

允许URL段使用正则表达式来限制路由是否匹配请求     

routes.MapRoute(                 "blog", // 路由名称                 "{controller}/{action}/{id}", // 带有参数的 URL                 new { controller = "Home", action = "Index", id = UrlParameter.Optional },// 参数默认值                                 new{controller=@"/d{4}",action=@"/d{2}"} );

路由按照先后顺序与传入的URL匹配,直到匹配成功为主

命名路由

生成指定路由名的 url超链接

@Html.RouteLink("test", "Default",

new {contorller="home",action ="index",id=1 } );

注:会按照找到的路由规则生成超链接(没有使用默认值)

Action返回不同值

ViewResult – 执行并读取指定的 完整视图

PartialViewResult – 指定并读取指定的 分部视图

分部视图:主要为某个页面提供部分html代码

一般用在Ajax请求()

JsonResult -> ActionResult – 请求Json数据时

return Json(object);//生成Json字符串

string – 直接返回字符串

验证码

public  ActionResult VCodeImg() {     VCode vcode = new VCode();     byte[] bytes = vcode.CreateVImg();     return File(bytes, @"image/jpeg"); }

获取当前请求路径:HtmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;

Area 区域

MVC 项目目录结构 缺点:

1.不利于分功能协作开发(购物车/商品管理/用户权限管理…)

2.代码结构臃肿…

注:可使用Area区域解决,甚至可以从物理上分开

Area 区域 – 添加

Area 区域 展示-在同一项目中

Area包含:

一套新的MVC文件夹

**AreaRegistration.cs文件

Area 区域 展示-在不同项目中

区域路由注册类

public class WebViewsAreaRegistration : AreaRegistration {  public override string AreaNameASP.Net MVC 之路由  {  get { return "WebViews";  }  }  public override void RegisterArea(AreaRegistrationContext context)  {
//注册区域路由 context.MapRoute(
"WebViews_default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "ItcastCRM.AreaController.WebViews" }//指定该路由查找控制器类的命名空间 ); } }

Area 区域运行原理

正文到此结束
Loading...