RazorViewEngine
のViewLocationFormats
とPartialViewLocationFormats
のプロパティは、Global.asaxスタートアップコードで変更できます。下のラインの周りに何か動作するはずです:
protected void Application_Start(object obj, EventArgs e)
{
var engine = ViewEngines.Engines.OfType<RazorViewEngine>().Single();
var newViewLocations = new string[] {
"~/SomeOtherFolder/{1}/{0}.cshtml",
"~/GlobalFolder/{0}.cshtml"
};
engine.ViewLocationFormats = newViewLocations;
engine.PartialViewLocationFormats = newViewLocations;
}
IIRCは、{1}コントローラと{0}の名前を表示するために、あなたが確認するために、既存のプロパティを見ることができますし対応することになります。
既存の検索場所を保持する場合は、新しい配列にコピーする必要があります。
public class MyRazorViewEngine : RazorViewEngine
{
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
if (controllerContext.Controller is ProductController)
{
string viewPath = "/Views/MyProduct/" + viewName + ".cshtml";
return base.FindView(controllerContext, viewPath, masterName, useCache);
}
return base.FindView(controllerContext, viewName, masterName, useCache);
}
public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)
{
if (controllerContext.Controller is ProductController)
{
string partialViewPath = "/Views/MyProduct/Partials/" + partialViewName + ".cshtml";
return base.FindPartialView(controllerContext, partialViewPath, useCache);
}
return base.FindPartialView(controllerContext, partialViewName, useCache);
}
}
そして:あなたは、特定のコントローラーのための特別な景色の場所を持っているしたい場合は
あなた自身のビューエンジンを作成するように言われた人もいますが、カスタムビューエンジンを作成しなくてもこれは可能です。知識で助けてください。ありがとう – Mou
http://coding-in.net/mvc-3-organize-your-partial-views/ – Mou