Asp.net mvc T4MVC地图路线不';不行?

Asp.net mvc T4MVC地图路线不';不行?,asp.net-mvc,t4mvc,Asp.net Mvc,T4mvc,我正在尝试设置索引页路由。它是这样工作的: routes.MapRoute("", "", new {controller = "Home", action = "Index"}) 但如果我将其替换为T4MVC: routes.MapRoute("", "", MVC.Home.Index()); 不知何故,它不起作用(我得到一个“资源找不到”错误)。好像我做了数百万次,而且成功了。那么我做错了什么 更新。 我使用了Route Debugger,发现ASP.NET MVC Route和T4M

我正在尝试设置索引页路由。它是这样工作的:

routes.MapRoute("", "", new {controller = "Home", action = "Index"})
但如果我将其替换为T4MVC:

routes.MapRoute("", "", MVC.Home.Index());
不知何故,它不起作用(我得到一个“资源找不到”错误)。好像我做了数百万次,而且成功了。那么我做错了什么

更新。


我使用了Route Debugger,发现ASP.NET MVC Route和T4MVC Route之间的区别在于T4MVC添加了Area=“”,而ASP.NET MVC没有添加Area=“”(它只保留控制器和操作)。

请注意MVC.Home.Index()返回ActionResult

如果要获取操作和控制器的名称,必须编写:

MVC.Home.Index().gett4mvcsresult().Controller-控制器的名称 MVC.Home.Index().gett4mvcsresult().Action-操作的名称

编辑:

routes.MapRoute("", "", new {controller = MVC.Home.Index().GetT4MVCResult().Controller, action = MVC.Home.Index().GetT4MVCResult().Action})
更新(2014年7月15日):作为一种解决方法,我认为您需要在项目中添加一个虚拟区域,例如

  • 右键单击“项目”,然后选择“添加/区域”。将其命名为“Dummy”(或其他名称)
  • 除了DummyAreaRegistration.cs文件,您可以删除其中的所有内容
原始答复:


如果您在
MapRoute
调用中“转到定义”,是否可以检查它是否确实转到T4MVC重载?请注意,如果您在某个区域,则需要调用
MapRouteArea

该问题是由AssemblyBinding的一些问题引起的。我查看了VS中的警告,按了两次有关AssemblyBinding的警告,它们被修复了。这个问题对我帮助很大:

为什么它“不太好”。如果我重命名控制器或操作,会怎么样?我无法找到我们在哪些区域出现问题的示例,但您可以在任何地方尝试此操作。(可能是mvc 3左右,在mvc 4和mvc 5中它已经修复了)它转到T4Extensions.cs,我不使用区域