【问题标题】:ASP.NET: Change the CSS link href in code hehind?ASP.NET:在后面的代码中更改 CSS 链接 href?
【发布时间】:2017-04-20 13:40:30
【问题描述】:

我有一个 .ASPX 页面,我想在其中更改后面代码中的 CSS href。我搜索了几个技巧来做到这一点,但找不到任何我想要的东西。

HTML 标记:

<link id="linkCSS" runat="server" href='/css/1.css' rel="stylesheet" type="text/css" />

这是我在代码背后的尝试:

If (mobile)
{
    HtmlLink link = (HtmlLink)this.FindControl(linkCSS.UniqueID);
    link.Href = "/css/2.css";
}

但我得到以下异常:

无法将“System.Web.UI.HtmlControls.HtmlGenericControl”类型的对象转换为“System.Web.UI.HtmlControls.HtmlLink”类型。

有什么想法吗?谢谢。

【问题讨论】:

  • 你试过了吗:HtmlLink link = (HtmlLink)linkCSS;
  • @Emad 是的,同样的错误
  • 这个错误告诉你你需要知道的一切。您的 &lt;link&gt; 标记是通用 Html 控件,而不是 HtmlLink 控件。有关如何使用 HtmlLink 控件的更多信息,请参阅:msdn.microsoft.com/en-us/library/…

标签: c# html css asp.net


【解决方案1】:

不用找css就可以改成如下。

If (mobile)
{
  linkCSS.Attributes["href"] = "~/css/2.css";
}

我已经推荐了This Link.

【讨论】:

    【解决方案2】:

    由于您无法获取和修改控件(尽管我相信这是可能的),您可以使用占位符对其进行更多控制。像这样:

    <asp:PlaceHolder ID="headPlaceHolder" runat="server" />
    

    然后在你的服务器代码中:

    HtmlLink link = new HtmlLink();
    link.Href = "/css/2.css";
    headPlaceHolder.Controls.Add(link);
    

    看看有没有帮助:)

    【讨论】:

    • 我赞成这个,因为它有效,但我会接受 Chirag 的解决方案,因为它更优雅。感谢您的帮助。
    • 你很好。再次感谢您的帮助。
    【解决方案3】:

    您可以在服务器端使用此代码

    HtmlGenericControl link = this.FindControl(linkCSS.UniqueID) as HtmlGenericControl;
    
    link.Attributes["href"] = "css/2.css";
    

    【讨论】:

    • 这与接受的答案没有显着差异。
    猜你喜欢
    • 2012-06-08
    • 2014-08-07
    • 2016-06-05
    • 1970-01-01
    • 2016-11-25
    • 2011-04-16
    • 2014-03-24
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多