zoukankan      html  css  js  c++  java
  • asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页

    1、使用重名controller

       在asp.net mvc2以后的版本里面,有了area(区域的概念),这为我们开发中提供了不少方便的地方,但是很不凑巧,若是存在多个重名的controller就会发生错误,因此我们可以根据router的规则来解决这个问题。

    错误提示:

    我们可以根据错误提示来解决这个问题,在MapRoute方法添加namespaces参数,代码如下:

     1 public static void RegisterRoutes(RouteCollection routes)
     2         {
     3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     4 
     5             routes.MapRoute(
     6                 name: "Default",
     7                 url: "{controller}/{action}/{id}",
     8                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
     9                 namespaces:new []{"MvcApplication8.Controllers"}
    10             );
    11         }
    View Code

    加上命名空间后,就会按照命名空间去找相应的控制器,这个问题就解决了。

    2、设置area里面的页面为起始页

    解决这个问题,我们可以使用Route对象的DataTokens属性来指定命名空间列表。DataTokens.Add()方法,我们可以理解为存储于Route对象的DataTokens属性中,对应的Key为“Namespaces”。这两个问题的解决方法有相似之处。

    代码:

     1 public static void RegisterRoutes(RouteCollection routes)
     2         {
     3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
     4 
     5             routes.MapRoute(
     6                 name: "Default",
     7                 url: "{controller}/{action}/{id}",
     8                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
     9                 namespaces: new[] { "MvcApplication8.Controllers" }
    10             ).DataTokens.Add("area","admin");
    11         }
    View Code

    其中defaults里面的controller和action为area里面设置起始页面的controller和action方法。

    两个问题都解决了,欢迎探讨。

  • 相关阅读:
    warmup_csaw_2016
    pwn-简单栈溢出
    吃土
    编程中的进制转换
    linux系统安全及应用——账号安全(基本安全措施)
    vmware vSphere虚拟网络之标准交换机(二)
    vmware vSphere虚拟网络(一)
    服务器虚拟化技术概述
    用shell脚本安装apache
    The server of Apache (二)——apache服务客户端验证
  • 原文地址:https://www.cnblogs.com/flykai/p/3223328.html
Copyright © 2011-2022 走看看