【问题标题】:T4MVC not picking up the Views in Areas (ASP.NET MVC 3 RTM)T4MVC 未获取区域中的视图 (ASP.NET MVC 3 RTM)
【发布时间】:2011-01-16 11:33:05
【问题描述】:

T4MVC 在除区域外的所有地方都运行良好。

在区域中,它选择控制器和动作,而不是视图。

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

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

在区域之外,我可以写:

return View(Views.MyOtherView);

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

MVC.MyArea.MyController.MyAction()

换句话说:

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

b.我可以在我的区域控制器中获取操作。

c。但我无法获得我所在区域的视图。

可能是什么问题?

TIA

编辑:

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

【问题讨论】:

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


    【解决方案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',这是它始终工作的方式。

    请尝试在干净的应用中按照这些步骤操作,看看它是否有效。

    【讨论】:

    • 是的,这行得通。我的原始项目还可以卸载并重新安装 t4mvc 包(我已经安装了 2.6.40 版本,所以不是版本问题)。所以看起来模板没有自动重新运行。我该怎么做才能强制这样做?
    【解决方案2】:

    我相信我的问题是由 T4MVC 未重新运行引起的。结果(我推测)T4MVC 不会更新以反映项目中的更改。例如,在 Controller 中更改 Action 的参数。或者(针对这个问题)添加一个新视图。

    关于让自己重新运行的 T4MVC 文档含糊不清,但指出了一个名为 Chirpy 的 VS 插件。

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

    看图:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2011-08-07
      • 2021-08-02
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 2011-02-07
      • 1970-01-01
      相关资源
      最近更新 更多