2010-01-28 61 views
2

我升级到MVC 2,更新了我所有的程序集(也复制到本地)。控制器有问题的错误,升级到MVC 2

我改变了我的路线是:

routes.MapRoute(
       "Admin", 
       "admin/{controller}/{action}/{id}", 
       new { controller = "Admin", action = "index", id = ""}, 
       new[] { "MyNamespace.Web.Controllers.Admin" } // namespace 
      ); 


routes.MapRoute(
       "Default",            // Route name 
       "{controller}/{action}/{id}",       // URL with parameters 
       new { controller = "Home", action = "Index", id = "" }, // Parameter defaults 
       new[] { "MyNamespace.Web.Controllers" } // namespace 
      ); 

我的控制器看起来像:

/controllers/admin/ProductController.cs 
/controllers/ProductController.cs 

我仍然得到错误:

he controller name 'Product' is ambiguous between the following types: 
MyNamespace.Web.Controllers.Admin.ProductController 
MyNamespace.Web.Controllers.ProductController 

应该添加的命名空间解决这个问题问题?

回答

3

你的第一条路线表明有一个类/controllers/Admin/AdminController.cs。它是否正确?

此外,请阅读this。看起来你已经提供了命名空间区域,但它们并不存在似乎是ASP.NET MVC v2所需的同一个结构。

您的项目解决方案的结构应该是这样的:

  • 地区
    • 联系
      • ProductController的
  • 控制器
    • ProductController的

你的结构看起来是这样的。

  • 控制器
    • 联系
      • ProductController的
    • ProductController的
1

有一个变化M制成VC 2 Beta,其中指定名称空间(如“MyNamespace.Web.Controllers”)将在该名称空间及其子名称空间中进行搜索。这与MVC 1行为不同,其中指定名称空间会导致工厂仅查找该名称空间。

此更改将在MVC 2 RTM之前恢复。具体来说,MVC 2 RTM行为将是指定“MyNamespace.Web.Controllers”将只搜索该名称空间 - 就像在MVC 1中一样 - 并指定“MyNamespace.Web.Controllers。*”(注意点星号)将搜索该名称空间加上它的子项。