MVC设定默认路由为指定的Area下的某个action

作者:chenqiangdage 时间:2023-03-03 00:00:56 

MVC中,一般的情况下,使用IDE工具帮我们生成的代码,在路由注册的时候:


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

默认给的路由地图 我们在default:中去配置 默认是又那个控制器返回action。

这样形如:http://localhost:1450/ 这样,会默认使用默认的view文件夹中去找对应的响应model页面;

但是当项目规模庞大,使用了MVC提供的Area模块快的规划,又要让Area块下某一个页面作为默认页面时,那就需要把route默认的路由去转到我们指定Area下;要用到RouteCollection 的DataTokens方法。

举个例子:Area下有注册一个Admin块


public class AdminAreaRegistration : AreaRegistration
 {
   public override string AreaName
   {
     get
     {
       return "Admin";
     }
   }
   public override void RegisterArea(AreaRegistrationContext context)
   {
     context.MapRoute(
       "Admin_default",
       "Admin/{controller}/{action}/{id}",
       new { controller = "Login", action = "Index", id = UrlParameter.Optional } //默认路径是Login控制器,和Index action
     );
   }
 }

如果要让默认到admin下指定的。那么RegisterRoutes方法需要给routes路由到area 下的Admin块;


public static void RegisterRoutes(RouteCollection routes)
   {
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     routes.MapRoute(
        "Default",
       "{controller}/{action}/{id}",
       new { controller = "Login", action = "Index", id = UrlParameter.Optional }, //这里要和Admin块下的默认控制器和action一样
       new[] { "GTA.CMS.Site.Web.Areas.Admin.LoginController" }// 这个是你控制器所在命名空间
     ).DataTokens.Add("area","Admin");    
   }

来源:https://blog.csdn.net/chenqiangdage/article/details/48136601

标签:mvc,area,action
0
投稿

猜你喜欢

  • C#中数组初始化、反转和排序用法实例

    2023-05-03 23:03:10
  • C#修改MAC地址类的实例

    2023-09-11 06:51:14
  • Flutter 仿微信支付界面

    2023-08-30 01:31:53
  • spring boot容器启动流程

    2023-02-17 09:25:36
  • Springboot文件上传功能的实现

    2021-09-20 12:48:47
  • C#实现的json序列化和反序列化代码实例

    2022-04-05 22:24:08
  • Flutter 实现网易云音乐字幕的代码

    2023-04-01 11:50:45
  • Android继承现有控件拓展实现自定义控件textView

    2021-05-29 06:29:15
  • 关于Java利用反射实现动态运行一行或多行代码

    2021-11-27 23:12:55
  • 算法证明每一位都相同十进制数不是完全平方数

    2022-06-21 23:00:46
  • Unity键盘WASD实现物体移动

    2021-06-14 13:46:21
  • PC蓝牙通信C#代码实现

    2023-07-06 19:59:32
  • 关于fastjson的@JSONField注解的一些问题(详解)

    2021-11-23 09:09:34
  • Java静态代理与动态代理案例详解

    2021-12-09 19:55:44
  • Java中接收键盘输入的三种方法

    2023-11-13 16:11:29
  • vue+springboot前后端分离工程跨域问题解决方案解析

    2023-08-06 06:51:10
  • C#委托与匿名委托详解

    2023-02-24 21:12:41
  • Java获取Process子进程进程ID方法详解

    2022-09-01 13:21:08
  • Android动态添加碎片代码实例

    2023-10-19 23:35:13
  • Android连接服务器端的Socket的实例代码

    2023-03-11 06:06:47
  • asp之家 软件编程 m.aspxhome.com