1

マスター ページに (データベースに保持されている) カスタム ヘッダーを挿入しようとしています。カスタム ヘッダーは、ユーザーごとに変更されます。

コントローラーをパーシャルにアタッチする方法について少し混乱しています(これができる場合でも)。私が達成したいと思っているのは、いくつかのイベントで呼び出された特定のコントローラーからコードのブロックをレンダリングすることです。

    public ActionResult GetHeader(Guid clientID)
    {
        string szHeader = GetTheme(ThemeType.Portal, JoloTheme.ThemeArea.Header, clientID);
        return Content(szHeader, "text/html");
    }

私が作成したコントローラーですが、現在書いているページのサブセクションにこれを取得する方法がわかりません (同じコントローラーではありません)。

これがここで完全にナンセンスである場合は申し訳ありませんが、まだ MVC を学んでいると思います。

4

1 に答える 1

2

_Layout.cshtml でHtml.Action()ヘルパーを使用する必要があります。常に有効な clientID を提供できるとは限らないため、Nullable Guid をパラメーターとして使用する必要があると思います。

public ActionResult GetHeader(Guid? clientID)
{
    string szHeader = GetTheme(ThemeType.Portal, JoloTheme.ThemeArea.Header, clientID);
    return Content(szHeader, "text/html");
}

_Layout.cshtml で Html.Action ヘルパーを呼び出す方法は次のとおりです。

@Html.Action("GetHeader", 
             "SomeController",
             new { clientID = IsLoggedIn ? ClientID : (Guid?)null } )
于 2012-06-17T22:57:54.183 に答える