使用T4MVC指定部分视图路径

时间:2009-11-10 09:49:48

标签: .net asp.net-mvc t4 partial-views t4mvc

我在ASP.NET MVC项目中使用T4MVC。

我的观点中有这样的陈述:

<% Html.RenderPartial(MVC.SomeController.Views.PartialViewName); %>

以前是这样的:

<% Html.RenderPartial("../SomeController/PartialViewName"); %>

之前它工作正常,但在我使用T4MVC指定局部视图后,它无法找到该局部视图。

它只是试图在下面的路径中找到它,这是默认行为。

~/Views/SomeController
~/Views/Shared

有没有办法通过T4MVC指定部分其他控制器视图文件夹中的局部视图?或者无论我在做什么,这是正确的吗?我错过了什么?

感谢。

2 个答案:

答案 0 :(得分:4)

一种方法 - 您可以扩展视图引擎并使其了解特定的局部视图位置。我自己将所有部分视图放在Views/Home/Partial(其中Home =&gt;控制器名称)文件夹中。

 public class ViewEngine : WebFormViewEngine
    {
        public ViewEngine()
        {
            PartialViewLocationFormats = PartialViewLocationFormats
                .Union(new[]
                       {
                           "~/Views/{1}/Partial/{0}.ascx",
                           "~/Views/Shared/Partial/{0}.ascx",
                       }).ToArray();
        }
    }

但这听起来更像是你错误地构建你的应用程序。控制器特定的部分视图不应呈现与另一个控制器绑定的部分视图。将这些部分视图放在共享文件夹中。

答案 1 :(得分:4)

您可能已经知道,我已更改T4MVC以生成视图的完整路径而不是短名称。所以你上面的原始代码应该可行。如果您遇到问题,请告诉我。

这是在构建2.6.03中。 Download Page