4

c# を使用した Asp.net 私はこのプログラミング言語に不慣れで、変更できるかどうか疑問に思っていました

.main
{
    padding: 0px 12px;
    margin: 0px 0px 0px 0px;
    min-height: 630px;
    width:auto;
    background-image:url('background.png');
  }

ボタンのクリックに基づく背景画像の URL.. ボタンのクリックに基づく C# コードの使用

protected void initiative_Click(object sender, ImageClickEventArgs e)
        {
            Session["agency"] = "Initiative";
        }

しかし、主なことは、CSS ファイルがボタンのクリックがある場所とは別のページに好まれるということです。

4

4 に答える 4

1

オプション 1 CSS ファイルを変更するのではなく、セッションに基づいて異なるクラスを適用します。

.main
{
    padding: 0px 12px;
    margin: 0px 0px 0px 0px;
    min-height: 630px;
    width:auto;
}

.agency1 { background-image: url('agency1.png'); }
.agency2 { background-image: url('agency2.png'); }
.agency3 { background-image: url('agency3.png'); }

次に、divに2つのクラスを追加します

<div class="main <%=Session["agency"]%>"></div>

オプション 2 特定の CSS をレンダリングする汎用ハンドラーを作成し、それをページに追加する

<link href="GenerateCss.ashx" rel="stylesheet" />

GenerateCss.ashx.cs ファイルには、次のようなものがあります

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";

        string image = "main";
        if (context.Session != null && context.Session["agency"] != null)
        {
            image = context.Session["agency"].ToString();
        }

        string result = ".main{padding: 0px 12px; margin: 0px 0px 0px 0px; min-height: 630px; width:auto; background-image:url('" + image + ".png');}";
        context.Response.Write(result);
    }

不適切に使用すると XSS 攻撃を受ける可能性があるため、細心の注意を払ってください 。 session["agency"] がユーザー制御可能でないことを確認する必要があります。つまり、ユーザーはその値を指定できないということです。これにより、必要なものをそこに注入できるようになります。

ただし、2 番目のオプションはお勧めしません。なぜなら、すべてのリクエストに対してこれを呼び出すことになり、CSS を静的にできるときに CSS を生成し続けるのは得策ではないからです。オプション1を使用できる場合は、それがより良いと思います.

于 2012-10-26T09:57:05.527 に答える
0

CSS を本当に変更する必要がある場合は、この CSS パーサーをお勧めします。この CSS パーサーを使用すると、CSS ファイルを読み込んで変更し、再度書き出すことができます。しかし、すでに指摘したように、関連する html 要素にスタイルを設定して、このクライアント側を変更する方がよい場合があります。

于 2012-10-26T09:28:28.053 に答える
0

プロパティを除いて同様の別のCSSクラスを作成するだけです.mainbackground-image

.someclass
{
    padding: 0px 12px;
    margin: 0px 0px 0px 0px;
    min-height: 630px;
    width:auto;
    background-image:url('newbackground.png');

}

例:

<div id="myDiv" runat="server" class="main"></div>

  protected void initiative_Click(object sender, ImageClickEventArgs e)
  {
     myDiv.CssClass="someclass"
  }

注: コード ビハインドからアクセスできるようにするには、div に runat="server" 属性があることを確認する必要があります。

于 2012-10-26T09:26:51.497 に答える
0

次のようなものがあります。

<div class="main" id="mainContainer" runat="server"><asp:ContentPlaceHolder ID="MainContent" runat="server"/></div>

サーバー側で、次のようにします。

mainContainer.Attributes.Add("style", "background-image('myImage.png')");

または、さらに良いことに、CSS クラスを変更することもできます。

mainContainer.Attributes.Add("class", "className");
于 2012-10-26T09:40:43.457 に答える