2

特定のレイアウトを使用するようにコントローラー全体を割り当てる方法はありますか? ViewStartでレイアウトを割り当てることができることは知っていますが、viewStartが使用されているコントローラーを知る方法はありますか?

私の目的は、2 つの管理レイアウトを用意することです。1 つには、管理コントローラーで何かを操作するときに追加のナビゲーション バーがあります。

4

1 に答える 1

2

カスタム アクション フィルターを作成できます。

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();
    }
}
于 2012-07-21T14:38:26.653 に答える