C# 如何在aspx.cs页面后面的代码中设置:before css样式

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:

我的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: 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页面中测试了