C# 使用c语言以编程方式更改CSS文件#
Asp.net使用c#我不熟悉这种编程语言,不知道是否可以更改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
.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);
}