Как сгруппировать частичные общие представления для указанных контроллеров? - PullRequest
4 голосов
/ 28 августа 2009

Можно ли указать ViewEngine искать частичные общие представления в дополнительных папках для указанных контроллеров (в то время как НЕ для других)?

Я использую WebFormViewEngine.

Так выглядит мой PartialViewLocations на данный момент.

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

1 Ответ

2 голосов
/ 28 августа 2009

Конечно. Не меняйте PartialViewLocationFormats в этом случае; вместо этого выполните:

    public override ViewEngineResult FindPartialView(
        ControllerContext controllerContext, 
        string partialViewName, 
        bool useCache)
    {
        ViewEngineResult result = null;

        if (controllerContext.Controller.GetType() == typeof(SpecialController))
        {
             result = base.FindPartialView(
                 controllerContext, "Partial/" + partialViewName, useCache);
        }

        //Fall back to default search path if no other view has been selected  
        if (result == null || result.View == null)
        {
            result = base.FindPartialView(
                controllerContext, partialViewName, useCache);
        }

        return result;  
    }
...