C# 如何在aspx.cs页面后面的代码中设置:before css样式
我的aspx.cs页面中有一个属性,其中包含图像的路径。我需要将此路径设置为css中a:before上的背景图像,如下所示:C# 如何在aspx.cs页面后面的代码中设置:before css样式,c#,asp.net,C#,Asp.net,我的aspx.cs页面中有一个属性,其中包含图像的路径。我需要将此路径设置为css中a:before上的背景图像,如下所示: firstLinkUrl.Style.Add("background-image", FirstLinkIcon); 我在aspx.cs页面中的属性名是:FirstLinkIcon 现在在.aspx页面中,我正在尝试: <style> .m-quick-links ul li a:before { background-image:
firstLinkUrl.Style.Add("background-image", FirstLinkIcon);
我在aspx.cs页面中的属性名是:FirstLinkIcon
现在在.aspx页面中,我正在尝试:
<style>
.m-quick-links ul li a:before {
background-image: url('<%=FirstLinkIcon%>');
background-position: 0 -4164px;
}
</style>
但它在锚定标记上设置背景图像,而不是:before
请建议如何从代码隐藏设置a:before样式?或者,如果不能从代码隐藏完成,那么如何访问上面解释的aspx页面上css中的代码隐藏属性
我已经搜索过了,但没有得到任何帮助,所以作为一个问题发布。除非我忘记了ASP.NET,否则在运行时不直接更改
元素就不可能修改关于伪元素的任何内容。我建议您在非伪元素中包含所需的任何数据或逻辑。除非我忘记了ASP.NET,否则在运行时不直接更改
元素就不可能修改伪元素的任何内容。我建议您在非伪元素中包含所需的任何数据或逻辑。在对其进行研究后,我终于找到了问题的解决方案。为此,我为LiteralControl创建了一个对象,然后通过在其中添加我的属性,使用string builder创建了一个样式标记作为字符串,现在我已将LiteralControl的Text属性初始化为上面的样式标记字符串,最后将LiteralControl添加到页眉
它在“我的页面标题”中使用属性值呈现生成的样式标记,并在“我的页面”上应用呈现的样式。以下是我在代码隐藏中使用的代码:
System.Web.UI.LiteralControl ltr = new System.Web.UI.LiteralControl();
StringBuilder sb = new StringBuilder();
sb.Append("<style type=\"text/css\" rel=\"stylesheet\"> .m-quick-links ul li a:before { background-image: url(");
sb.Append(FirstLinkIcon); //here i am appending property value in css style
sb.Append(") !important; } </style>");
ltr.Text = sb.ToString();
this.Page.Header.Controls.Add(ltr);
public partial class UserControl1 : System.Web.UI.UserControl
{
public string getContent()
{
return DateTime.Now.ToShortTimeString();
}
}
System.Web.UI.LiteralControl ltr=new System.Web.UI.LiteralControl();
StringBuilder sb=新的StringBuilder();
sb.Append(“.m-quick-links ul-lia:before{背景图片:url(”);
sb.Append(FirstLinkIcon);//我在这里以css样式追加属性值
某人附加(“)!重要;}”);
ltr.Text=sb.ToString();
this.Page.Header.Controls.Add(ltr);
以下是我的页面标题上的呈现样式标记:
<style type="text/css" rel="stylesheet"> .m-quick-links ul li a:before { background-image: url(http://localhost:8082/assets/img/sprites/global-se8a7877705.png) !important; } </style>
.m-quick-links ul li a:before{背景图片:url(http://localhost:8082/assets/img/sprites/global-se8a787705.png)!重要;}
经过研究,我终于找到了解决问题的方法。为此,我为LiteralControl创建了一个对象,然后通过在其中添加我的属性,使用string builder创建了一个样式标记作为字符串,现在我已将LiteralControl的Text属性初始化为上面的样式标记字符串,最后将LiteralControl添加到页眉
它在“我的页面标题”中使用属性值呈现生成的样式标记,并在“我的页面”上应用呈现的样式。以下是我在代码隐藏中使用的代码:
System.Web.UI.LiteralControl ltr = new System.Web.UI.LiteralControl();
StringBuilder sb = new StringBuilder();
sb.Append("<style type=\"text/css\" rel=\"stylesheet\"> .m-quick-links ul li a:before { background-image: url(");
sb.Append(FirstLinkIcon); //here i am appending property value in css style
sb.Append(") !important; } </style>");
ltr.Text = sb.ToString();
this.Page.Header.Controls.Add(ltr);
public partial class UserControl1 : System.Web.UI.UserControl
{
public string getContent()
{
return DateTime.Now.ToShortTimeString();
}
}
System.Web.UI.LiteralControl ltr=new System.Web.UI.LiteralControl();
StringBuilder sb=新的StringBuilder();
sb.Append(“.m-quick-links ul-lia:before{背景图片:url(”);
sb.Append(FirstLinkIcon);//我在这里以css样式追加属性值
某人附加(“)!重要;}”);
ltr.Text=sb.ToString();
this.Page.Header.Controls.Add(ltr);
以下是我的页面标题上的呈现样式标记:
<style type="text/css" rel="stylesheet"> .m-quick-links ul li a:before { background-image: url(http://localhost:8082/assets/img/sprites/global-se8a7877705.png) !important; } </style>
.m-quick-links ul li a:before{背景图片:url(http://localhost:8082/assets/img/sprites/global-se8a787705.png)!重要;}
我测试了
内部样式的简单使用,并确保它工作正常
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl1.ascx.cs" Inherits="TestWebForm1.UserControl1" %>
<style>
.class1:before { content:'<%=getContent()%>'; color: green; }
</style>
<div class="class1" style=" padding:10px; border:1px solid silver; width:300px;">
<span>This is UserControl1:</span><br />
<asp:TextBox runat="server" ID="utxt1" width="100px"></asp:TextBox>
<asp:Button runat="server" ID="ubtn1" Text="+" OnClick="ubtn1_Click" />
</div>
请注意,在usercontrol
中以这种方式嵌入样式标记并不好,因为它们将在使用它们的正文中呈现(不在
部分)
请说明在您的情况下这有什么问题?我测试了在样式中使用
的简单方法,并确保它能正常工作
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl1.ascx.cs" Inherits="TestWebForm1.UserControl1" %>
<style>
.class1:before { content:'<%=getContent()%>'; color: green; }
</style>
<div class="class1" style=" padding:10px; border:1px solid silver; width:300px;">
<span>This is UserControl1:</span><br />
<asp:TextBox runat="server" ID="utxt1" width="100px"></asp:TextBox>
<asp:Button runat="server" ID="ubtn1" Text="+" OnClick="ubtn1_Click" />
</div>
请注意,在usercontrol
中以这种方式嵌入样式标记并不好,因为它们将在使用它们的正文中呈现(不在
部分)
请说明在您的情况下这有什么问题?您有母版页还是简单的aspx页?您说的是,但由于在css中使用,它在呈现页面时抛出错误,我测试了它,它工作正常。如果您对您的场景进行更多的解释,我可以帮助您比回答有关使用LiteralControl
的问题更简单地执行此操作。我还有一个母版页。。但我只需要在特定的ascx页面上使用这种样式。我也在使用Kentico CMS,因为我的ascx页面有一个web部件,所以当我在我的ascx页面上使用inside style标记时,我的web部件没有加载,并且由于关键字而引发语法错误@如果您有比LiteralControl更好的简单解决方案,请建议我也尝试一下。谢谢@S.serp您在哪里定义了样式
标记?在usercontrol
或母版页或aspx..中。。?我在母版页和简单的aspx页(不使用任何母版)中测试了
,它可以正常工作。您有母版页还是只有一个简单的aspx页?您说,但由于在css中使用,它在呈现页面时抛出错误,我测试了它,它可以正常工作。如果您对您的场景进行更多的解释,我可以帮助您比回答有关使用LiteralControl
的问题更简单地执行此操作。我还有一个母版页。。但我只需要在特定的ascx页面上使用这种样式。我也在使用Kentico CMS,因为我的ascx页面有一个web部件,所以当我在我的ascx页面上使用inside style标记时,我的web部件没有加载,并且由于关键字而引发语法错误@如果您有比LiteralControl更好的简单解决方案,请建议我也尝试一下。谢谢@S.serp您在哪里定义了样式
标记?在usercontrol
或母版页或aspx..中。。?我在母版页和简单的aspx页面中测试了