1

基本コントローラー(StaffBaseControllerなど)がある場合、返されるViewResultの結果にデフォルトのレイアウトページを含めることはできますか?例:StaffLayout.cshtml。フォルダ構造で_viewstartファイルを使用してデフォルトのレイアウトを設定できることはわかっています。基本コントローラークラスに設定できるかどうか疑問に思いました。

もしそうなら、どうすればいいですか?特定の状況でデフォルトをオーバーライドすることは可能でしょうか?

ありがとう

グレイム

4

1 に答える 1

2

グリーム、

ベースコントローラーで次のようなことを試すことができます(これはaspxプロジェクトから取得されますが、かみそり用に調整できるはずです):

protected override ViewResult View(string viewName, string masterName, 
    object model)
{

    // we share some views that aren't partialviews
    // therefore, we have to ensure that the Shareholder view
    // is ALWAYS attached to the logged in user if they aren't an admin user
    bool userIsAdmin = IsAuthorised(new[] { "Admin" });

    if (!userIsAdmin && !string.IsNullOrEmpty(
        ControllerContext.HttpContext.User.Identity.Name))
    {
        masterName = "Shareholder";
    }

    return base.View(viewName, masterName, model);
}

この例では、最初に定義されたマスター テンプレート名 (Site.Master) の値は、ユーザーが管理者ユーザーでない場合、'Shareholder' (Shareholder.Master) に変更されます。

于 2012-05-01T14:02:00.260 に答える