【发布时间】:2011-06-13 19:17:34
【问题描述】:
我的情况是 T4MVC 正确生成所有内容(意味着智能感知显示所有区域/控制器/操作并且所有内容都编译),但是当我运行代码时,我收到 T4MVC was called incorrectly 运行时错误。
我调查了生成的文件,发现对于我项目中的一个控制器,只有基类中的操作会生成覆盖的存根操作。对于其他控制器,正在生成所有操作。它们都具有相同的设置,如下所述。
我有一个 BaseController 类,它有一些共享代码(并继承自 Controller)。在Controllers 目录(项目的根目录)中,我有许多控制器,它们都继承自BaseController。
然后我有几个区域。在每个 Area 中,我都有相同的控制器,每个控制器都继承自根 Controllers 目录中的同名控制器。
运行 T4MVC(版本 2.6.54),除了 one 控制器外,一切正常。奇怪的是,智能感知适用于控制器,但在引用实际操作时会阻塞(在 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;
}
}
}
【问题讨论】:
标签: t4mvc