Указание частичного пути просмотра с помощью T4MVC - PullRequest
2 голосов
/ 10 ноября 2009

Я использую T4MVC в нашем проекте ASP.NET MVC.

На мой взгляд, у меня есть такое утверждение:

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

Который ранее был таким:

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

Раньше все работало нормально, но после того, как я указал частичное представление с помощью T4MVC, он не смог найти это частичное представление.

Это просто попытка найти его по указанным ниже путям, что является поведением по умолчанию.

~/Views/SomeController
~/Views/Shared

Есть ли способ указать частичное представление, которое находится в папке представлений некоторых других контроллеров через T4MVC? или что бы я ни делал, это правильно? Чего мне не хватает?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 13 декабря 2009

Как вы, возможно, уже знаете, я изменил T4MVC для генерации полного пути к представлению вместо краткого имени. Таким образом, исходный код, который вы имеете выше, должен просто работать. Дайте мне знать, если у вас возникнут проблемы.

Это в сборке 2.6.03. Страница загрузки .

4 голосов
/ 10 ноября 2009

Один подход - вы можете расширить свой viewengine и сделать его осведомленным о конкретных местах частичного просмотра. Я сам помещаю все частичные представления в папку Views/Home/Partial (где Home => имя контроллера).

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

Но, похоже, вы неправильно структурируете свое приложение. Частичные представления, специфичные для контроллера, не должны отображать частичные представления, связанные с другим контроллером. Поместите эти частичные представления в общую папку.

...