2010-01-28 46 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。*」(注意點星號)將搜索該名稱空間加上它的子項。