<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。但我不知道如何让它发挥作用。
答案 0 :(得分:1)
一种方法是直接修改Page_Load
首先,您向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";
隐藏字段具有含义,如果您由用户更改并在回发时使用它,如果您只是从数据库中获取该值,则没有理由使用隐藏字段。
您可以将文字用作
<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="<%=RootOfCss%>CSS/Template.css" rel="stylesheet" />
我们看到服务器控件正在翻译符号<
而不是让它像我们期望的那样运行并呈现字符串,所以我们可以选择并直接从后面的代码中更改href。
如果我们从标题移动,那么移动 runat=server
<link href="<%=RootOfCss%>CSS/Template.css" rel="stylesheet" />
正确呈现为
<link href="EXTRACSS/Template.css" rel="stylesheet" />