ActionFilterAttribute
次のように書いたカスタムでレイアウトパスを設定しようとしています:
public class LayoutInjecterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = "~/Views/Layouts/Test.cshtml"
}
}
}
ここで、Test.cshtml はRazorGenerator
、別のプロジェクトで (の助けを借りて) プリコンパイルされたビューです。
しかし、それは私にエラーを与えます:
ビュー「インデックス」またはそのマスターが見つからないか、検索された場所をサポートするビュー エンジンがありません。次の場所が検索されました: ~/Views/Home/Index.cshtml ~/Views/Shared/Index.cshtml ~/Views/Home/Index.aspx ~/Views/Home/Index.ascx ~/Views/Shared/Index. aspx ~/Views/Shared/Index.ascx ~/Views/Layouts/Test.cshtml
そしてコントローラーは実際には単純です:
[LayoutInjecter]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}