c# - 来自隐藏字段值和额外字符串的 CSS href 路径

标签 c# asp.net

<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="&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" />

关于c# - 来自隐藏字段值和额外字符串的 CSS href 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34918308/

相关文章:

c# - 使用 C# 的 Atom 条目

c# - 如何验证日期时间格式

c# - 如何从 List<string> 中删除相同的项目?

javascript - 使用 Javascript 的 Telerik 自动完成框文本更改事件

c# - 找不到方法 : Void System. Web.UI.ScriptResourceDefinition.set_LoadSuccessExpression

c# - C# : why is it implicitly by reference? 传入数组参数

c# - SaveChanges 不适用于我的所有项目?

c# - 为什么 Stream.Position 很长

c# - Runat ="server"在当前上下文中不存在

c# - 检查表是否包含重叠的时间跨度