ASP.NET MVC3如何直接从控制器引用视图

在我的控制器中,我想指定一个不同于默认值的视图。 像这样 :

public ActionResult EditSurvey(Int32 id) { Survey survey = _entities.Surveys.Single(s => s.Id == id); return View("Survey",survey); } 

但是我没有将视图指定为字符串(“Survey”),而是想直接引用它,所以如果我决定稍后更改我的视图名称,则不必手动更改此字符串。

所以我正在寻找这样的东西:

 public ActionResult EditSurvey(Int32 id) { Survey survey = _entities.Surveys.Single(s => s.Id == id); return View(Views.Admin.Survey,survey); } 

好问题,没有内置支持,因为View()方法需要一个字符串,但有一个名为T4MVC的Nifty工具由David Ebbo创建, 就是这样做的。

有关codeplex的文档有一个手动安装过程,我建议直接从VS2010使用NuGet包管理器。

它很简单,整个过程就是你可以添加到项目中的文件。 ( T4MVC.ttT4MVC.settings.t4 ),每次更改代码时, (1)右键单击T4MVC.tt和(2)单击“运行自定义工具”

它的作用是为所有控制器和视图生成一个包含Subclasses,Members,Properties的类。 它甚至为你的所有内容创建了强大的类型,比如图像,css,js等(我觉得这很棒)

例子:
这个

 @Html.RenderPartial("DinnerForm"); 

将会:

 @Html.RenderPartial(MVC.Dinners.Views.DinnerForm); 

这个:

 @Html.ActionLink("Delete Dinner", "Delete", "Dinners", new { id = Model.DinnerID }, null) 

将是这样:

 @Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID)) 

这个 :

  

将是这样:

  

你必须在每次更改视图,控制器之前右键单击tt文件和“运行自定义工具”,但是,如果要自动执行此操作, 请查看Chirpy执行此操作以及更多操作。

注意 T4MVC在文档上有aspx / mvc2示例,但在MVC3上运行正常,因为我在MVC3 / Razor应用程序的生产中使用)

另请参阅SO上的T4MVC标签 。