Asp.net mvc T4MVC未拾取区域中的视图(ASP.NET MVC 3 RTM)

Asp.net mvc T4MVC未拾取区域中的视图(ASP.NET MVC 3 RTM),asp.net-mvc,asp.net-mvc-3,t4mvc,Asp.net Mvc,Asp.net Mvc 3,T4mvc,T4MVC在任何地方都能正常工作,但在某些地区除外 在区域中,它拾取控制器和动作,但不拾取视图 因此,我无法在控制器中写入: return View(MVC.MyArea.MyController.Views.MyView); 在这些区域之外,我可以写: return View(Views.MyOtherView); 我还可以参考我的区域控制器中的操作: MVC.MyArea.MyController.MyAction() 换言之: a。我可以得到我想要的任何东西,如果它不在某个地区 b。

T4MVC在任何地方都能正常工作,但在某些地区除外

在区域中,它拾取控制器和动作,但不拾取视图

因此,我无法在控制器中写入:

return View(MVC.MyArea.MyController.Views.MyView);
在这些区域之外,我可以写:

return View(Views.MyOtherView);
我还可以参考我的区域控制器中的操作:

MVC.MyArea.MyController.MyAction()
换言之:

a。我可以得到我想要的任何东西,如果它不在某个地区

b。我可以在我的区域控制器中进行操作

c。但我无法在我的领域获得我的观点

有什么问题吗

短暂性脑缺血发作

编辑:
问题是让T4MVC重新运行(请参阅David Ebbo的答案和我的“答案”)。

您所拥有的应该可以工作,我通过以下方式验证了这一点:

  • 创建新的MVC3应用程序并添加最新的T4MVC 2.6.40(通过nuget)
  • 添加名为MyArea的区域
  • 添加名为MyController的控制器
  • 添加名为MyView的视图
  • 确保重新运行T4MVC.tt自定义工具
在那之后,我可以写:

namespace Mvc3Application.Areas.MyArea.Controllers {
    public partial class MyController : Controller {
        public virtual ActionResult Index() {
            return View(Views.MyView);
        }
    }
}

请注意,在第二种情况下,标记使用'My'而不是'MyController',这是它始终工作的方式


请尝试在干净的应用程序中执行这些步骤,看看它是否有效。

我认为我的问题是由T4MVC未重新运行引起的。因此(我推测)T4MVC不会更新以反映您项目中的变化。例如,更改控制器中动作的参数。或(针对此问题)添加新视图

关于让自己重新运行的T4MVC文档很模糊,但它指向了一个名为Chirpy的VS插件

Chirpy安装,然后您必须进入配置程序。您可以通过打开Visual Studio,然后转到工具>>选项并选择Chirpy选项来完成此操作

如图所示:

我必须添加模板名T4MVC.tt位才能让它工作。不确定这是否必要或原因。但现在一切都很好


如果有更好的方法,请告诉我。

是的,这很有效。对我的原始项目同样有效的是卸载并重新安装t4mvc软件包(我已经安装了版本2.6.40,因此没有版本问题)。因此,似乎模板没有自动重新运行。我能做些什么来强迫这一切?
namespace Mvc3Application.Areas.MyArea.Controllers {
    public partial class MyController : Controller {
        public virtual ActionResult Index() {
            return View(MVC.MyArea.My.Views.MyView);
        }
    }
}