特定のレイアウトを使用するようにコントローラー全体を割り当てる方法はありますか? ViewStartでレイアウトを割り当てることができることは知っていますが、viewStartが使用されているコントローラーを知る方法はありますか?
私の目的は、2 つの管理レイアウトを用意することです。1 つには、管理コントローラーで何かを操作するときに追加のナビゲーション バーがあります。
特定のレイアウトを使用するようにコントローラー全体を割り当てる方法はありますか? ViewStartでレイアウトを割り当てることができることは知っていますが、viewStartが使用されているコントローラーを知る方法はありますか?
私の目的は、2 つの管理レイアウトを用意することです。1 つには、管理コントローラーで何かを操作するときに追加のナビゲーション バーがあります。
カスタム アクション フィルターを作成できます。
public class LayoutAttribute : ActionFilterAttribute
{
private readonly string _layout;
public LayoutAttribute(string layout)
{
_layout = layout;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _layout;
}
}
}
次に、コントローラーをそれで装飾し、このコントローラーを使用したすべてのアクション(明らかにビューの結果を返す)は、指定したレイアウトを使用します:
[Layout("_SimpleLayout")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
}