2011-11-24 87 views
2

大家好我有MVC3路由和區域問題:ASP.NET MVC]路由匹配但控制器從不調用。 - > 404

我的路由匹配,但控制器從來沒有被調用,而是我得到一個404錯誤。

我已經設置有2項目的MVC3解決方案:

  • 一個是主MVC項目:CityServices
  • 一個用於區域:CityServices.Demo

ProjectSetup

在我的地區我註冊以下路線:

StuffController.cs的

內容:

public class StuffController : Controller 
{ 
    public ActionResult ListAll() 
    { 
     List<Stuff> lstStuff = new List<Stuff> 
            { 
             new Stuff() 
              { 
               Id = 0, 
               Name = "HEeey", 
               Value = 10.456f 
              }, 
             new Stuff() 
              { 
               Id = 1, 
               Name = "Beeee", 
               Value = 456789.47879999f 
              }, 
             new Stuff() 
              { 
               Id = 2, 
               Name = "HooAAaoo", 
               Value = 0f 
              } 
            }; 

     return Json(lstStuff); 
    } 
} 

我在主項目登記面積:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
     //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); 
    } 

我的路線匹配:http://host/Test 但我總是得到一個404錯誤。

任何想法?

感謝, - 傑里米

編輯:這是一個證明,該路由匹配:

enter image description here

找到解決方案

所以總結起來。 My AreaRegistration繼承的類與我的控制器不在同一個命名空間中。 因爲我沒有任何意見(這只是一個寧靜的websvc),我不必使用MvcContribs,這似乎是有用的,當你有一個不同的項目中的控制器比主站點&控制器。

希望這有助於你在這個問題上到達;)

+0

你是如何檢查你的路線真的與請求相匹配的? – Jan

+0

我添加了一張屏幕截圖,您可以看到路線匹配。 (使用Haack的路由調試器) –

回答

4

你有另外一個項目,這將不是每個默認工作,你的面積,除非你正在使用MvcContribs便攜領域或其他自定義實現

+0

路由注入工作起來很奇怪。我會盡力google您的建議 –

+0

我試過MvcContribs(http://goo.gl/OmCxZ)。它遵循他們的職位。但實際上問題不在於不使用自定義impl。這是一個命名空間問題(我在閱讀MvcContribs帖子時發現了這個問題)。看起來MvcContribs自定義impl在使用視圖時非常有用,我不在此項目中使用視圖。 –

0

我想你需要設置允許獲取JSON:

return Json(data, JsonRequestBehavior.AllowGet) 
+0

我試過了,問題仍然存在 –

+0

我用與我的應用程序相同的項目中的區域做了它。你需要結合這兩個答案。 –

相關問題