2011-06-13 28 views
3

我有一個情況T4MVC正在產生一切正常(意思是intellisense顯示所有區域/控制器/動作和一切編譯),但是當我運行代碼時,我得到一個T4MVC was called incorrectly運行時錯誤。T4MVC沒有爲一個控制器產生一些動作

我調查了生成的文件,發現對於我的項目中的一個控制器,只有基類中的動作纔會生成重寫的存根操作。對於其他控制器,正在生成所有操作。他們都有相同的設置,如下所述。

我有一個BaseController類有一些共享代碼(並從Controller繼承)。在Controllers目錄(項目的根目錄)中,我有一些控制器,全部從BaseController繼承。

然後我有幾個區域。在每個區域中,我有相同的控制器,每個控制器都從根控制器目錄中的同名控制器繼承。

運行T4MVC(版本2.6.54),一切正常,除了一個控制器。奇怪的是,intellisense適用於控制器,但在引用實際動作時(在ActionLink()調用中)扼流圈。

我手動添加了一個特別的動作到生成的代碼,並沒有錯誤。

所以我的問題是,什麼會導致T4MVC到而不是生成一個控制器的所有代碼?缺少的操作全部是public virtual ActionResult,而且這些操作本身工作正常。問題控制器在所有區域都有相同的問題。

一些縮寫代碼。

/Controllers/BaseController.cs

namespace MyProject.Controllers 
{ 
    public abstract partial class BaseController : Controller 
    { 
     protected ISession session; 

     public BaseController() 
     { 
     } 

     // other shared methods/actions 
    } 
} 

/Controllers/ActivitiesController.cs(這就是問題所在控制器)

namespace MyProject.Controllers 
{ 
    public partial class ActivitiesController : BaseController 
    { 
     // for resolving concurrency exceptions 
     private Activity userValues; 
     private Activity databaseValues; 

     public ActivitiesController() : base() 
     { 
      ViewBag.ControllerName = "Activities"; 
     } 

     // this action is causing the problem used like 
     <li>@Html.ActionLink("Activities", MVC.Areas.Module1.Activities.Index())</li> in a view 
     public virtual ActionResult Index() 
     { 
      return View(); 
     } 
    } 
} 

/Areas/Module1/Controllers/ActivitiesController.cs。這是全班

namespace MyProject.Areas.Module1.Controllers 
{ 
    public partial class ActivitiesController : MyProject.Controllers.ActivitiesController 
    { 
     public ActivitiesController() : base() 
     { 
      base.currentModule = Modules.Module1;    
     } 
    } 
} 

回答

4

你一定要重新運行T4MVC到基於最新的(點擊右鍵.TT文件/運行自定義工具)?

如果這不是問題,我可能需要看看有問題的示例應用程序,看看發生了什麼。

+0

是的,我重新運行了幾次,結果相同。我有一個大型項目,我會嘗試削減它或建立一個具有相同問題的應用程序。 – 2011-06-14 12:29:42

+0

好奇。我削減了我的項目,並有同樣的問題。我正要在這裏發帖,但試着先刪除所有T4MVC生成的文件,然後重新運行腳本。並且_that糾正了它。然後,我重新運行腳本,**問題又回來了**。 @David,如果你想看看它,我會很樂意分享這個項目(但不想公開發布)。 – 2011-06-14 13:43:34

+0

當然,你可以發郵件給我:david.ebbo AT微軟。越小/越簡單越好! :) – 2011-06-14 17:16:01

5

如果有其他人遇到這種情況,我有一個類似的問題,併產生運行時錯誤消息,但在一個不同的場景。這是在RedirectToAction聲明在ActionResult的方法結束:

RedirectToAction(MVC.[action name].Edit(id)); 

錯誤消息是不是很直觀,建議重新:

RedirectToAction(Edit(id)); 

錯誤糾正它之後就走了運行定製工具並沒有真正的幫助。

相關問題