ASP.NET MVC中怎么去控制路由,这个想关的文章很多,我在这里就是自我总结一下,仅供参考。

1.我们新建一个项目,查看RouteConfig.cs,代码如下:

 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

第3行,routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 表示忽略有扩展名  axd的路由,

你可以仿照它,如果你项目里有哪些文件是不攻外部访问的,可以全部过滤掉。

 routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

这个就是最基本的路由控制了。表示首页是HomeController里的ActionResult Index,默认路由参数为id

下面我们来改改这串代码,如下:

 ///首页
routes.MapRoute(
"Index", // Route name
"{controller}/{action}",
new { controller = "Index", action = "Index", id = UrlParameter.Optional },
new string[] { "SnsCWan.Controllers" }
);

有备注大伙应该看得懂,其中 new string[] { "SnsCWan.Controllers" } 里的SnsCWan是当前网站名称,这个先注意一下。

 ///PayStepIndex
routes.MapRoute(
"PayStepIndex", // Route name
"{controller}/{action}/{Method}/{id}.html",
new { controller = "PayStep", action = "Index", Method = UrlParameter.Optional, id = UrlParameter.Optional },
new string[] { "SnsCWan.Controllers" }
);

这个是有控制多个参数的路由,你可以改 "{controller}/{action}/{Method}/{id}.html" 来设置你需要的路由方式。

下面我们新建一个Admin的Areas,表示站点的管理员部分,默认生成的代码如下:

 public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}

同一个网站里面,如果根目录下的路由和Areas下的路由同时都路由到一个Index/Index,此时项目就会报错,告诉你同时存在了2个路由,这个时候怎么处理呢? 如下:

 context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Index", action = "Index", id = UrlParameter.Optional },
new string[] { "SnsCWan.Areas.Admin.Controllers" }
);

特别主意 new string[] { "SnsCWan.Areas.Admin.Controllers" } ,这个和根目录下的路由的区别,它表示指定 SnsCWan网站下的Areas区域的Admin控制器,

这样,路由间就不会再产生冲突了。

总得配置路由就是这些,具体怎么去设置更加美观的url还有待你更具创意的想法。

本群提供ASP.NET MVC,EF,LINQ,WEB API技术支持,不在乎人多,在乎人精。
ASP.NET MVC群 171560784  
诚邀各路高手、初学者加入。

ASP.NET MVC 及 Areas 简单控制路由的更多相关文章

  1. 跟我学ASP.NET MVC之十一:URL路由

    摘要: 在MVC框架之前,ASP.NET假定在请求的URLs和服务器硬盘文件之间有直接的关系.服务器的职责是接收浏览器请求,从相应的文件发送输出. 这种方法只能工作于Web表单,每一个ASPX页面既是 ...

  2. ASP.NET MVC 多语言实现——URL路由

    考虑实现一个完整的基于asp.net mvc的多语言解决方案,从路由到model再到view最后到数据库设计(先挖好坑,后面看能填多少). 我所见过的多语言做得最好的网站莫过于微软的msdn了,就先从 ...

  3. ASP.NET MVC Ajax.ActionLink 简单用法

    ASP.NET MVC 项目中,如何使用类似于 iframe 的效果呢?或者说 Ajax 局部刷新,比如下面操作: 我们想要的效果是,点击 About 链接,页面不刷新(地址栏不变),然后下面的内容进 ...

  4. ASP.NET MVC 5 入门教程 (3) 路由route

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...

  5. ASP.NET MVC使用Areas后怎样获取Area(区域)的名称

    写此随笔,目的只为今后在ASP.NET MVC项目中再用到Area(区域)时作为备查. 获取当前Area(区域)名称的方法是: ViewContext.RouteData.DataTokens[&qu ...

  6. Asp.net mvc自定义Filter简单使用

    自定义Filter的基本思路是继承基类ActionFilterAttribute,并根据实际需要重写OnActionExecuting,OnActionExecuted,OnResultExecuti ...

  7. asp.net mvc使用jwt简单例子

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声 ...

  8. asp.net MVC把Areas区域绑定成二级域名

    先分析需求 在MVC项目中,我们如果有两个Areas.比如Test和DEMO.我们的访问地址应该是 http://localhost:8098/test http://localhost:8098/d ...

  9. 新的框架,新的感觉ASP.NET MVC 分享一个简单快速适合新手的框架

    在ASP.NET世界中摸爬滚打好几年,用过了各种框架,在最初的ASP.NET web from 到现在的MVC 在起初的经典三层,到现在的MVC  IOC  注入 . 突然发现,有些时候真不是跟风用一 ...

随机推荐

  1. GifCam

    转载:http://blog.bahraniapps.com/?page_id=21 下载 http://pan.baidu.com/s/1c0vdHIw GifCam   Note:GifCam c ...

  2. ProcMon启用调试符

    1.设置 _NT_SYMBOL_PATH 如果在 _NT_SYMBOL_PATH 环境变量中提供了正确的?symsrv?语法,则常见的 Mircoroft 调试工具将使用 SymSrv 技术.这些工具 ...

  3. 【Android 界面效果36】Fragment管理

    要管理fragment们,需使用FragmentManager,要获取它,需在activity中调用方法getFragmentManager(). 你可以用FragmentManager来做以上事情: ...

  4. 关于报错:'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based

    最近在看Extension相关知识的时候,自己写了个小demo 发现[UIApplication sharedApplication]这个方法敲不出来了, 总是报错:'sharedApplicatio ...

  5. Oracle基础(十) DML数据操作

    一.DML数据操作语言 主要用于检索.插入和修改数据库信息.它是最常用的SQL命令,如INSERT(插入).UPDATE(更新).SELECT(选择).DELETE(删除). 1.INSERT插入语句 ...

  6. POJ 1502 MPI Maelstrom (最短路)

    MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6044   Accepted: 3761 Des ...

  7. asp.net Calendar 日历控件用法

    asp.net Calendar 是微软自带的一款日历控件,除了简单显示日期时间外, 还可以绑定一些需要的事件. Calendar_DayRender 事件,是在加载都去时间日期时候的方法,用此方法可 ...

  8. 每天一道LeetCode--434. Number of Segments in a String

    Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...

  9. MySQLdb模块安装-win环境

    原帖地址:http://blog.csdn.net/wklken/article/details/7253245 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见  P ...

  10. Android之adb命令

    1.安装APK(如果加 -r 参数,保留已设定数据,重新安装filename.apk) adb install xxx.apk adb install -r xxx.apk 2.卸载APK(如果加 - ...