路由

一、路由,就是用来分析、拆解Url的。

二、默认路由,{Controller}/{action}/{id},如果修改路由,Controller和Action这两个名称不能变,id可以改写成任意的,比如id写成aa,那么在控制器的方法中传入的形参名称也只要写aa就行了。

如{Controller}/{action}/{id}对应

1 public ActionResult Test1(int id)
2 {
3   return Content("id=" + id);  
4 }

{Controller}/{action}/{aa}按顺序一一对应

1 public ActionResult Test1(int aa)
2 {
3   return Content("aa=" + aa);  
4 }

 

三、注意路由规则的url中不能包含?,不能以/或者~开头,所以不能匹配QueryString,例如

url:"{controller}/{action}/{aa}?username={username}"

这样是不行的。

 

四、url:"{controller}/{action}/{name}/{id}"这样的路由规则,就匹配如下这样的Action

1 public ActionResult Test2(string name,int id)
2 {
3       return Content("name=" + name + ",id=" + id);  
4 }

注意的是形参的名称name和路由规则中的name名称必须一致,形参名称Id和路由规则中的id名称也要保持一致。

 

五、配置多个路由规则

匹配多个路由规则,就从上往下匹配,匹配到一个就结束,不再往下匹配。

 

六、用路由生成url

有如下路由规则:

1 routes.MapRoute( name: "Default", url: "{controller}/{action}" ); 
2 routes.MapRoute( name: "Default2", url: "{controller}/{action}/{*aa}" ); 3 routes.MapRoute( name: "Default3", url: "{controller}/{action}/{id}/{name}" );

在cshtml中插入

Url.RouteUrl("Default3", new { controller="Yes",action="Test",id=5,name="rupeng"})

那么在页面中会显示

/Yes/Test/5/rupeng

说明:如果在Url.RouteUrl("Default3", new { controller="Yes",action="Test",id=5,name="rupeng"}

)中加入属性,而这个路由规则中没有匹配的,那么页面中显示会以QueryString的形式显示。

例如在cshtml中插入

Url.RouteUrl("Default3", new { controller="Yes",action="Test",id=5,name="rupeng",age=16,height=182})

那么在页面中会显示

/Yes/Test/5/rupeng?age=16&height=182

 

转载于:https://www.cnblogs.com/dotnetHui/p/7979326.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值