CSS href来自隐藏归档值和额外字符串的路径

时间:2016-01-21 08:03:26

标签: c# asp.net

<link runat="server" href="CSS/Template.css" rel="stylesheet" />

这是我的外部CSS链接。我还有一个隐藏的页面:

<asp:HiddenField ID="hdfExtra" runat="server" />

我在hdfExtra上为page load设置了值。我需要将css href与这个隐藏的文件结合起来,我需要这样的东西:

href="<% hdfExtra.Value %>CSS/Template.css"

所以我们将Extra/CSS/Template.css作为href。但我不知道如何让它发挥作用。

1 个答案:

答案 0 :(得分:1)

一种方法是直接修改Page_Load

上的href

首先,您向id

提供link
<link runat="server" id="csslink" href="CSS/Template.css" rel="stylesheet" />

然后在页面加载时,您将href修改为

csslink.Attributes["href"] = RootOfCss + "CSS/Template.css";

我们在页面上呈现:

<link id="csslink" href="EXTRACSS/Template.css" rel="stylesheet" />

您可以使用单个字符串RootOfCss或使用您要求的隐藏字段值

csslink.Attributes["href"] = hdfExtra.Value + "CSS/Template.css";

隐藏字段具有含义,如果您由用户更改并在回发时使用它,如果您只是从数据库中获取该值,则没有理由使用隐藏字段。

替代Literal

您可以将文字用作

<asp:Literal runat="server" ID="cssliteral" EnableViewState="false"></asp:Literal>

以及page_load背后的代码

cssliteral.Text = string.Format("<link id=\"csslink\" href=\"{0}/Template.css\" rel=\"stylesheet\" />", RootOfCss);

使用公共字符串

您可以在类上添加公共字符串,然后在页面上呈现它,例如。

<head runat="server">
    <%=FullLink%>
</head>

以及

背后的代码

public partial class PageTest:System.Web.UI.Page {     public string RootOfCss = string.Empty;

public string FullLink = string.Empty;

protected void Page_Load(object sender, EventArgs e)
{
    RootOfCss = "EXTRA";

    FullLink = string.Format("<link id=\"csslink\" href=\"{0}/Template.css\" rel=\"stylesheet\" />", RootOfCss);
}

备注

head内部的控件更加棘手,因为头部是服务器端控件,您无法在链接上轻松添加字符串。其他方法是在输出处使用文字和直接渲染。

例如此代码

<link runat="server" id="csslink" href="<%=RootOfCss%>CSS/Template.css" rel="stylesheet" />

由服务器呈现为

<link id="csslink" href="&lt;%=RootOfCss%>CSS/Template.css" rel="stylesheet" />

我们看到服务器控件正在翻译符号<而不是让它像我们期望的那样运行并呈现字符串,所以我们可以选择并直接从后面的代码中更改href。

如果我们从标题移动,那么移动 runat=server

<link href="<%=RootOfCss%>CSS/Template.css" rel="stylesheet" /> 

正确呈现为

<link href="EXTRACSS/Template.css" rel="stylesheet" />