Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c语言以编程方式更改CSS文件#_C#_Asp.net - Fatal编程技术网

C# 使用c语言以编程方式更改CSS文件#

C# 使用c语言以编程方式更改CSS文件#,c#,asp.net,C#,Asp.net,Asp.net使用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

Asp.net使用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文件喜欢与按钮单击所在的页面不同。

只需创建另一个类似于
.main
CSS
类,除了
背景图像
属性

.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"
  }

受保护的void initiative\u Click(对象发送者,ImageClickEventArgs e)
{
myDiv.CssClass=“someclass”
}

注意:您需要确保您的div具有runat=“server”属性,以便从代码隐藏中进行访问。

如果您确实需要更改CSS,那么我可以推荐,这将使您能够读取CSS文件,更改它,然后再将其写出。但正如前面所指出的,通过在相关html元素上设置样式来更改此客户端可能会更好。

您可以有如下内容:

<div class="main" id="mainContainer" runat="server"><asp:ContentPlaceHolder ID="MainContent" runat="server"/></div>
或者,甚至可以更改CSS类:

mainContainer.Attributes.Add("class", "className");
选项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>
要特别小心,如果使用不当,这可能会导致XSS攻击您需要确保会话[“代理”]不受用户控制。我的意思是,用户不能提供该值,因为这将允许他们在其中注入他们想要的任何东西


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

您不能用javascript在客户端执行此操作吗?我已经尝试过了,但它不起作用。。。我想知道是不是possible@user1776590您试图更改的背景图像是什么?@user1776590是否要更改身体的背景图像?这会改变当前页面上的backgound还是它所指向的页面上的backgound,因为它与上一页具有不同的site.master。@user1776590我认为是当前页面。主幻灯片上的行不是正在运行的页面,而是代码在site.master文件中从未加载的页面#一旦单击将触发的按钮将重新加载页面的回发事件。如果图像名称基于会话中的内容,则导航到另一个页面时即可。
<div class="main <%=Session["agency"]%>"></div>
<link href="GenerateCss.ashx" rel="stylesheet" />
    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);
    }