うまくいけば、かみそりのビューエンジンを継承し、検索するビューの場所を追加するだけのカスタムビューエンジンを提供することで、これを実行できたと思います。
using System.Linq;
using System.Web.Mvc;
namespace MvcApplication1
{
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
: this(null)
{
}
public CustomViewEngine(IViewPageActivator activator)
: base(activator)
{
var partialViewLocationFormatsList = PartialViewLocationFormats.ToList();
partialViewLocationFormatsList.Add("~/Views/{1}/DisplayTemplates/{0}.cshtml");
partialViewLocationFormatsList.Add("~/Views/{1}/EditorTemplates/{0}.cshtml");
partialViewLocationFormatsList.Add("~/Views/Shared/DisplayTemplates/{0}.cshtml");
partialViewLocationFormatsList.Add("~/Views/Shared/EditorTemplates/{0}.cshtml");
PartialViewLocationFormats = partialViewLocationFormatsList.ToArray();
var areaPartialViewLocationFormatsList = AreaPartialViewLocationFormats.ToList();
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/{1}/DisplayTemplates/{0}.cshtml");
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/{1}/EditorTemplates/{0}.cshtml");
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/Shared/DisplayTemplates/{0}.cshtml");
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/Shared/EditorTemplates/{0}.cshtml");
AreaPartialViewLocationFormats = areaPartialViewLocationFormatsList.ToArray();
}
}
}
そしてそれをGlobal.asaxに登録しました:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());