<link runat="server" href="CSS/Template.css" rel="stylesheet" />
这是我的外部 CSS 链接。而且我在页面中有一个隐藏的文件:
<asp:HiddenField ID="hdfExtra" runat="server" />
我在页面加载
时为hdfExtra
设置了一个值。我需要将 css href 与这个隐藏的文件结合起来,我需要这样的东西:
href="<% hdfExtra.Value %>CSS/Template.css"
所以我们有 Extra/CSS/Template.css
作为 href。但我不知道如何让它工作。
最佳答案
一种方法是直接修改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";
如果您由用户更改并在回发时使用隐藏字段,则隐藏字段有意义,如果您只是从数据库中获取该值,则没有理由使用隐藏字段。
替代文字
你可以使用文字作为
<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);
使用公共(public)字符串
例如,您可以在类中添加公共(public)字符串,然后在页面上呈现它。
<head runat="server">
<%=FullLink%>
</head>
和后面的代码
公共(public)部分类 PageTest : System.Web.UI.Page { 公共(public)字符串 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
中的控件有点棘手,因为 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" />
关于c# - 来自隐藏字段值和额外字符串的 CSS href 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34918308/