如何在aspx.cs页面后面的代码中设置一个:之前的css样式

时间:2017-01-19 05:22:43

标签: c# asp.net

我的aspx.cs页面中有一个属性,其中包含图像的路径。我需要将此路径设置为a:background之前的背景图像,如下所示:

我在aspx.cs页面中的属性名是:FirstLinkIcon

现在在.aspx页面我正在尝试:

<style>
    .m-quick-links ul li a:before {
        background-image: url('<%=FirstLinkIcon%>');
        background-position: 0 -4164px;
    }
</style>

但是由于&lt;%=%&gt;而导致渲染页面出错。在css中使用。

我也尝试从这样的代码设置这个样式:

firstLinkUrl.Style.Add("background-image", FirstLinkIcon);

但它在锚标记上设置背景图像而不是:在

之前

请建议我如何设置a:之前的代码风格?或者如果不能从后面的代码中完成,那么如何在aspx页面上的css中访问代码后面的代码?如上所述?

我已经搜索过它,但没有得到任何帮助,所以发布了一个问题。

3 个答案:

答案 0 :(得分:0)

除非我忘记了ASP.NET,否则无法在运行时修改关于伪元素的任何而不直接更改<style>元素。我建议在非伪元素中包含所需的任何数据或逻辑。

答案 1 :(得分:0)

经过研究,我终于找到了解决问题的方法。为此,我为LiteralControl创建了一个对象,然后通过在其中附加我的属性,使用字符串构建器将样式标记创建为字符串,现在我已将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);

以下是我的页面标题上的样式标记:

<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>

答案 2 :(得分:0)

我在<%=...%>内使用style进行了简单的测试并确保其有效。

<%@ 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>

及其背后的代码:

public partial class UserControl1 : System.Web.UI.UserControl
{

    public string getContent()
    {
        return DateTime.Now.ToShortTimeString();
    }
}

请注意,在usercontrol中以这种方式嵌入样式标记并不好,因为它们将在您使用它们的body内呈现(不在<head>部分中)。

请说明你的情况有什么问题?