2014-10-27 79 views
0

我有一个文件夹中的控制器内部我的应用程序名为admin装箱,所以我的文件夹结构看起来像这样asp.net路由无法找到方法

-Models 
| 
-Views 
| 
-Controller 
    | 
    |-HomeController.cs 
    | 
    |-Admin 
    | 
    |-HomeController.cs <-- in this controller, i have methods Add,Delete,View 

我需要创建一个路由,这样,如果我输入网址http://localhost:2336/admin/add,它会执行家庭控制器的add方法,但我得到一个404错误。

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
      name: "Admin", 
      url: "Admin/{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      namespaces: new[] { "fms.Controllers.Admin" } 
      ); 

      routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

     } 

回答

1

您的管理员指定的路线是这样的路线:

Admin/{controller}/{action}/{id} 

这意味着您的网址,你需要有控制器名称以及动作。例如,这应该工作:

http://localhost:2336/admin/home/add 

如果更改URL路由到这一点,将工作:

Admin/{action}/{id} 

但是,这并不意味着它是一个有点毫无意义有你的管理控制器,它自己夹。如果我是你,我会查找如何创建一个新的MVC区域。

+0

我得到这个错误'发现多个类型与名为'Home'的控制器相匹配'。' – Smith 2014-10-27 17:37:27

+0

您可能需要为其他路由指定一个名称空间。或者使用一个区域,使所有这些消失:) – DavidG 2014-10-27 17:38:33

+0

我已经做了'fms.Controllers.Admin'或者你在谈论默认路线 – Smith 2014-10-27 17:49:03