欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-12 21:33:22
mvc中,一般的情况下,使用ide工具帮我们生成的代码,在路由注册的时候: public static void registerroutes(routecoll...

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。

这样形如: 这样,会默认使用默认的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");     
    }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

上一篇:

下一篇: