4

Asp.net using c# 我是这种编程语言的新手,想知道是否可以改变

.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

<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"] 不是用户可控制的。我的意思是用户不能提供该值,因为这将允许他们在那里注入任何他们想要的东西。

我不推荐第二个选项,因为您将为每个请求调用它,并且当您可以将其设为静态时继续生成 CSS 并不是一个好主意。如果您可以使用选项1,我会说它会更好。

于 2012-10-26T09:57:05.527 回答
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 回答
0

如果你真的需要修改 CSS,那么我可以推荐这个 CSS parser,它可以让你读入 CSS 文件,修改它,然后再写出来。但正如已经指出的,最好通过在相关 html 元素上设置样式来更改此客户端。

于 2012-10-26T09:28:28.053 回答
0

只需制作另一个CSS类似于.main除了background-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 回答