1

次の Session_Start を使用して global.asax をセットアップしています。

protected void Session_Start()
{
    HttpContext.Current.Session.Add("sourceCode", "default");
}

私のコントローラーには次のものがあります。

public ActionResult Index(string sourceCode)
{
    if (sourceCode != null && sourceCode != "default")
    {
        Session["sourceCode"] = sourceCode;
        return View();
    }
    else
    {
        return View();
    }
}

このセッション変数に基づいて、さまざまな部分レイアウトを表示できるようにしたいと考えています。これを行う適切な方法は何ですか?コントローラーから部分ビューをロードできますか、それともビューでそれを処理する必要がありますか?

これは、特別価格とランディング ページのクリエイティブを決定するためにサイト全体で使用したい変数です。この同じ構造をすべてのコントローラーに設定する必要がありますか、それともよりグローバルな方法がありますか?

ありがとう、ブライアン

4

2 に答える 2

1

すべてのページでレイアウトを表示する場合は、レイアウト ファイルにロジックを追加することをお勧めします。そこに、そのようなものを追加します(かみそりを想定)

@if(HttpContext.Current.Session["someValue"]){
@*render some partial*@
}else{
@*render some other partial*@
}
于 2013-04-11T16:32:01.603 に答える