T4MVC MapRoute不起作用?

时间:2014-07-13 14:17:51

标签: asp.net-mvc t4mvc

我正在尝试设置索引页面路由。它的工作原理如下:

routes.MapRoute("", "", new {controller = "Home", action = "Index"})

但如果我用T4MVC替换它:

routes.MapRoute("", "", MVC.Home.Index());

某种程度上它不起作用(我得到了一个"无法找到资源"错误)。好像我做了数百万次并且有效。那么我做错了什么?

更新

我使用了Route Debugger,发现ASP.NET MVC路由和T4MVC路由之间的区别在于T4MVC添加了Area =""虽然ASP.NET MVC没有(它只保留控制器和动作)。

3 个答案:

答案 0 :(得分:1)

更新(2014年7月15日):作为解决方法,我认为您需要在项目中添加虚拟区域,例如

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

原始答案:

如果您在MapRoute电话上“定义”,您是否可以检查它是否真的发生了T4MVC过载?请注意,如果您在某个区域,则需要拨打MapRouteArea

答案 1 :(得分:0)

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

如果你想得到动作和控制器的名字,你必须写:

MVC.Home.Index()。GetT4MVCResult()。Controller - Controller的名称 MVC.Home.Index()。GetT4MVCResult()。Action - Action的名称

编辑:

routes.MapRoute("", "", new {controller = MVC.Home.Index().GetT4MVCResult().Controller, action = MVC.Home.Index().GetT4MVCResult().Action})

答案 2 :(得分:0)

问题是由于装配绑定的一些问题引起的。我查看了VS中的警告,对组装结合的警告按了两次,它们被修复了。这个问题给了我很多帮助:T4MVC ArgumentOutOfRangeException in View