【问题标题】:Access an HTML control on ASP Master Page from the code behind of a Content Page从内容页后面的代码访问 ASP 母版页上的 HTML 控件
【发布时间】:2009-08-19 18:47:55
【问题描述】:

我有一个 ASP.NET / C# 应用程序,其中的母版页包含我的应用程序的主菜单和几个依赖于该母版页的内容页。

我想突出显示与当前显示的内容页面相对应的母版页的菜单链接。

为此,我已经有一个专门用于此的 CSS 类(称为“selected”)

因此,我试图通过使用其 ID 访问我想从内容页面突出显示的母版页链接,并执行类似的操作(在内容页面中):

HtmlLink currentMenu = (HtmlLink) Master.FindControl("idOfTheLinkToHighlight");
currentMenu.Attributes.Add("class", "selected");

但我得到以下异常:

Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlGenericControl' to type 'System.Web.UI.HtmlControls.HtmlLink

有人可以帮我吗? 谢谢

【问题讨论】:

  • 我们可以看看您是如何在母版页中声明您的链接的吗?
  • 看起来您的控件声明不是您要强制转换的 HtmlLink 类型,正如 Gregoire 已经指出的那样,控件声明代码会有所帮助。

标签: asp.net master-pages code-behind


【解决方案1】:

顺便试试

(HtmlGenericControl)currentMenu = (HtmlGenericControl) Master.FindControl("idOfTheLinkToHighlight");
currentMenu.Attributes.Add("class", "selected");

它应该可以工作,因为 HtmlGenericControl 也有属性

【讨论】:

  • 没错!正是 e 刷新此页面的时间,这是我尝试过的。它工作正常(由于您的第一个答案,我的问题只是我想到的一个错误;)
【解决方案2】:

因为我需要它是一个 HTML 链接,所以我搞砸了一段时间。原来你需要 runat="server" 在例如

<head runat="server" id=aHead>

【讨论】:

    【解决方案3】:

    仅供参考,我需要做一些类似的事情,为了让它正常工作,我将 runat="server" 添加到 body 标记中(感谢这个线程)。

    【讨论】:

    • 这正是 Buswell 两年前的回答所说的。
    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2020-01-14
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多