クエリ文字列パラメータに基づいて、指定されたクラス名をdivに追加するカスタムヘルパメソッドを記述することができます。もちろん、あなたのCSSファイルには、背景画像を適用した異なるクラス定義があります。例えば
:
public static class HtmlExtensions
{
public static string BannerClass(this HtmlHelper html)
{
var bg = html.ViewContext.Controller.ValueProvider.GetValue("bg");
if (bg == null || string.IsNullOrEmpty(bg.AttemptedValue))
{
// no bg parameter => return a default class
return "default_banner";
}
if (string.Equals("a", bg.AttemptedValue))
{
return "banner_a";
}
else if (string.Equals("b", bg.AttemptedValue))
{
return "banner_b";
}
// unknown value for the bg parameter => return a default class
return "default_banner";
}
}
してから_Layout
にあなたはdiv要素、あるいは身体のようないくつかのプレースホルダにこのクラスを適用することができます:
<div class="@Html.BannerClass()">OK</div>
それは常にのために適用されます。この道をアプリケーション内のすべてのビュー
今残っているすべて異なるバナーのためのあなたのCSSルールを定義することです:
.default_banner {
background-image: url('../images/default_banner.png')
}
.banner_a {
background-image: url('../images/banner_a.png')
}
.banner_b {
background-image: url('../images/banner_b.png')
}
感謝。これは現在のURLでのみ機能するようです。私はすべてのリンクを同じクエリ文字列を含むように変更する必要があります。私がクエーストリングを維持できる方法はありますか? – StarCub
nevermind、私はセッションでそれを保存し、セッションがnullであるかどうかを確認できることに気付きました。私は答えを受け入れた後、私の質問に答えるために+1 – StarCub