3

我有一种情况,T4MVC 正在正确生成所有内容(意味着智能感知显示所有区域/控制器/操作并且所有内容都可以编译),但是当我运行代码时,出现T4MVC was called incorrectly运行时错误。

我调查了生成的文件,发现对于我项目中的一个控制器,只有基类中的操作会生成覆盖的存根操作。对于其他控制器,正在生成所有操作。它们都具有相同的设置,如下所述。

我有一个BaseController类有一些共享代码(并继承自Controller)。在Controllers目录(项目的根目录)中,我有许多控制器,它们都继承自BaseController.

然后我有几个区域。在每个区域中,我都有相同的控制器,每个控制器都继承自根 Controllers 目录中的同名控制器。

运行 T4MVC(版本 2.6.54),除了一个控制器外,一切正常。奇怪的是,智能感知适用于控制器,但在引用实际操作时(在ActionLink()调用中)会阻塞。

我在生成的代码中特别手动添加了一项操作,并且没有错误。

所以我的问题是,什么会导致 T4MVC为控制器生成所有代码?缺少的动作是全部public virtual ActionResult,并且动作本身可以正常工作。问题控制器在所有区域都有相同的问题。

一些缩写代码。

/控制器/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

2 回答 2

6

万一其他人遇到这个问题,我会遇到类似的问题并产生运行时错误消息,但情况有点不同。它位于 ActionResult 方法末尾的 RedirectToAction 语句中:

RedirectToAction(Edit(id));

更正后错误消失:

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

错误消息不是很直观,重新运行自定义工具的建议并没有真正帮助。

于 2013-01-07T16:49:27.873 回答
4

您是否确保重新运行 T4MVC 以基于最新生成(右键单击 .tt 文件/运行自定义工具)?

如果这不是问题,我可能需要查看有问题的示例应用程序以了解发生了什么。

于 2011-06-14T00:56:51.060 回答