T4MVC没有获取区域中的视图(ASP.NET MVC 3 RTM)

时间:2011-01-16 11:33:05

标签: asp.net-mvc asp.net-mvc-3 t4mvc

除了地区以外,T4MVC在各地工作正常。

在“区域”中,它会选择“控制器”和“操作”,但不会选择“视图”。

所以,我不能写在我的控制器中:

return View(MVC.MyArea.MyController.Views.MyView);

在地区之外,我可以写:

return View(Views.MyOtherView);

我还可以参考区域控制器中的操作:

MVC.MyArea.MyController.MyAction()

换句话说:

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

湾我可以在我的区域控制器中获取动作。

℃。但是我无法在我的区域获得我的观点。

问题是什么?

TIA

编辑:

问题是让T4MVC重新运行(参见David Ebbo的答案和我的“答案”)。

2 个答案:

答案 0 :(得分:1)

你有什么应该工作,我通过以下方式验证:

  • 创建新的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);
        }
    }
}

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

请注意,在第二种情况下,“My”中的标记代替“MyController”,这是它始终有效的方式。

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

答案 1 :(得分:1)

我认为我的问题是由T4MVC没有重新运行引起的。结果(我推测)T4MVC不会更新以反映项目中的变化。例如,更改Controller中Action的参数。或者(特定于此问题)添加新视图。

关于让自己重新运行的T4MVC文档含糊不清,但是你指的是一个名为Chirpy的VS添加。

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

见图片:

alt text

我必须添加模板名称T4MVC.tt位才能使其正常工作。不确定这是否必要或为什么。但现在一切正常。

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