2011-06-10 47 views
3

我在asp.net MVC3中有工作應用程序。今天當我在VS2010上進行工作時,我發現沒有特定控制器的動作正在觸發。在瀏覽控制器/操作時,我得到頁面未找到消息。我檢查了所有頁面(控制器,視圖)。即使我向該控制器添加新動作,它也不會被調用。與此同時,其他控制器的操作正常。我可以訪問頁面。這很奇怪,我無法弄清楚它。 有什麼幫助嗎?MVC 3控制器操作不起作用

編輯:這是不工作

控制器動作是從Global.asax的

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

     // Home and error page 
     routes.MapRoute("error", "error", new { controller = "Home", action = "Error" }); 

     //Default routing 
     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Program", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
      new string[] { "ASPNETMVCApplication.Controllers" } 
     ); 

     //Admin routing 
     routes.MapRoute(
      "Admin", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Program", action = "Index", id = UrlParameter.Optional }, // Parameter defaults 
      new string[] { "ASPNETMVCApplication.Areas.Admin.Controllers" } 
     );    
    } 

MedicalHistory行動http://localhost:7400/Registration/MedicalHistory/0

代碼:

[HttpGet] 
    public ActionResult MedicalHistory(int id = 0) 
    { 
     //some code 
     return View() 
    } 
+0

你能告訴我們一些代碼嗎? – 2011-06-10 09:27:10

+1

我敢打賭,你已經搞砸了路線。 – 2011-06-10 09:28:20

+0

檢查您的路線表 – Eranga 2011-06-10 09:30:39

回答

3

首先,你似乎已經錯誤地設置了你的管理區域。 要在您的MVC項目的根目錄中添加一個文件夾結構Areas/{您所在地區的名稱},例如地區/管理員包含所有常見的控制器,視圖文件夾。

在那裏你應該創建一個類繼承AreaRegistration並實現至少AreaName屬性和RegisterArea()方法。

在您的Application_Start()處理程序中的Global.asax.cs中,第一行應該是AreaRegistration.RegisterAllAreas();.

另外它非常值得將RouteDebug添加到您的應用程序並添加您在Application_Start()中使用的web.config開關,以打開或關閉路由調試。當你的路線行爲異常或沒有得到你期望的行動參數時,這是非常寶貴的。

1

我的猜測是這是一個路由問題。檢查你的路由是否沒有堵塞你期望工作的URL格式。

您能告訴我們您的路由代碼以及您期望的URL結構嗎?我可能會對這些信息給出更詳細的答案。

1
  • 它可能可能是您的控制器/操作名稱與傳入的請求不一致。
  • 調試並驗證@Request對象的屬性可能也有幫助!
  • 你也可以想像你的每個請求和路由使用此工具以下.. MACHING

http://mvcroutevisualizer.codeplex.com/

1

我只是有一個類似的問題,重命名控制器之後。花了我一會兒來看看控制器的視圖文件夾。完全忘了重命名它。