我在ASP.NET MVC项目中使用T4MVC。
我的观点中有这样的陈述:
<% Html.RenderPartial(MVC.SomeController.Views.PartialViewName); %>
以前是这样的:
<% Html.RenderPartial("../SomeController/PartialViewName"); %>
之前它工作正常,但在我使用T4MVC指定局部视图后,它无法找到该局部视图。
它只是试图在下面的路径中找到它,这是默认行为。
~/Views/SomeController
~/Views/Shared
有没有办法通过T4MVC指定部分其他控制器视图文件夹中的局部视图?或者无论我在做什么,这是正确的吗?我错过了什么?
感谢。
答案 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