菜单项的 ClientID

2024-02-21

我在页面上有一个项目,其中有一系列菜单项(从数据库动态生成)作为菜单项。

每个 MenuItem 将自身呈现为

<a class="ctl00_cphContent_cphMainContentTitle_uxHeaderMenu_menuPageNav_1 button ctl00_cphContent_cphMainContentTitle_uxHeaderMenu_menuPageNav_3" style="border-style:none;font-size:1em;" href="SomeURLHere.aspx">

但是我想获取此链接的 ClientID(我们使用外部 Javascript 库在模态灯箱样式框架中弹出页面)。其要求之一是我们需要识别“可点击对象 ID”,以便我们可以将其设置为能够在点击时触发事件。

我们网站上的其他地方都有

OurSite.SetupDialogueBoxForOpen('<%= HyperLink.ClientID =>');

但是由于某种原因,菜单项似乎没有分配给它的 ClientID 属性。这使得在 JavaScript 中设置客户端 ID 几乎不可能。

有谁知道如何获取菜单项的 ClientID(只是为了澄清,菜单项的类型为 System.Web.UI.WebControls.MenuItem

提前致谢!


如果要更改控件中项目的呈现方式,可以使用StaticMenuItemTemplate and DynamicMenuItemTemplate特性。我将仅在示例中使用第一个(静态,用于顶级项目):

<asp:Menu runat="server" ...>
  <StaticMenuItemTemplate>
    <a id="<%# GetSuitableClientId(Container) %>"><%# Eval("Text") %></a>
  </StaticMenuItemTemplate>
</asp:Menu>

The StaticMenuItemTemplate http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.staticitemtemplate.aspx属性是类型ITemplate http://msdn.microsoft.com/en-us/library/system.web.ui.itemplate.aspx与此类模板属性的常见情况一样,它用TemplateContainer http://msdn.microsoft.com/en-us/library/system.web.ui.templatecontainerattribute.aspx属性。这指定了要在其中实例化模板的容器,通常该容器可以访问渲染时可能需要的某些上下文。在这种情况下,它是类型MenuItemTemplateContainer http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menuitemtemplatecontainer.aspx它实现了IDataContainer从而提供对数据项的访问。

因此,我们将此容器传递回页面中的方法,并在该方法中构造一个我们认为合适的 ID。例如,我们可以使用数据项作为深度,使用容器作为索引:

protected string GetSuitableClientId(MenuItemTemplateContainer container)
{
  MenuItem item = (MenuItem)container.DataItem;
  return String.Format("menuItem-{0}-{1}", item.Depth, container.ItemIndex);
}

我在构建这个答案时的猜测是,您现在可以调整 JavaScript 以绑定到<a id="menuItem-2-4">Text</a>元素,因为您现在有了可预测的客户端 ID。

编辑:您还可以在模板中使用以下内容,并让 ASP.NET 负责创建唯一的客户端 ID,但这不太可预测...

<asp:HyperLink ID="MenuItem" runat="server" NavigateUrl='<%# Eval("NavigateUrl") %>' />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

菜单项的 ClientID 的相关文章

  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • gdb 在 docker 上立即退出“进程已完成,退出代码 1”或 lldb“数据包返回错误 8”。另外:如何在 docker 中允许进行 C++ 调试

    这花了我一整天的时间才找到 所以我将其发布以供将来参考 我正在 docker 镜像上开发 C 我正在使用克利翁 我的代码是在调试模式下编译的 并且在运行模式下运行良好 但是当尝试调试时 进程会立即退出 并显示非常丰富的信息 Process
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • std::bind 重载解析

    下面的代码工作正常 include
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS

随机推荐

  • Symfony 1.4 更改管理生成器操作或模板

    如何修改管理员生成的模块 操作和模板 它们存储在缓存中 但我需要修改它们 模板 有可能吗 问候 当然可以 只需将模板文件从缓存复制到相关的module templates后台文件夹中的模板 然后修改 扩展 对于操作 将相同命名的操作添加到m
  • Haskell 中“where”子句在哪里派上用场

    我发现我很少遇到需要使用where条款 然而 我确实发现我过去偶尔会使用它 什么时候是where使用的子句 即在什么情况下使用 什么情况下应该使用它 Haskell Wiki 上也提供了这个问题的两个很好的答案 http haskell o
  • express.js 路由中的全局会话变量?

    当我在express js路线中设置会话时 app get function req res req session foo bar 我无法在其他路线中访问它 未定义 这可能吗 我必须考虑特殊配置吗 thanks 我实际上通过像这样设置会话
  • Firestore云函数递归更新子集合/集合组

    我有这个云功能 import pLimit from p limit const syncNotificationsAvatar async userId string change Change
  • 使用 aws-sdk-go 将对象上传到 AWS S3,而不创建文件

    我正在尝试使用 golang sdk 将对象上传到 AWS S3 而无需在系统中创建文件 尝试仅上传字符串 但我很难做到这一点 谁能给我一个示例 说明如何上传到 AWS S3 而无需创建文件 AWS 如何上传文件的示例 Creates a
  • 修剪和清理 Google 脚本

    我可以用下面的脚本修剪我的爸爸 但是有没有一种方法可以使用类似于 VBA 中的 Clean 的 Google 脚本来清理 Google 中的数据 即删除所有非打印字符 我无法查找并替换从其他来源复制并粘贴到 GS 的数据 Thanks fu
  • 如何在 Yocto 中使用自己的设备树和修改后的内核配置?

    我正在努力用 yocto 构建一个自己的 嵌入式 Linux 它基于 SAMA5D3x MB SAMA5D3x CM RONETIX 和 SAMA5D35 我有两个问题 1 更改设备树 我基于以下内容构建图像 MACHINE sama5d3
  • Firestore:代码 16(请求的身份验证凭据无效)

    我正在尝试通过私钥和管理员权限使用管理员权限访问 Firestore 以便我可以将其用于后端的查询和内容 i import fb admin const firebaseAdmin require firebase admin i init
  • 可以在 Spring 中完全禁用 CORS 支持吗?

    如中所述由于标准标头 CORS 预检请求失败 https stackoverflow com questions 38507370 cors preflight request fails due to a standard header如
  • 可以观察自定义指令内的范围吗?

    我正在尝试编写一个指令来创建地图组件 这样我就可以编写如下内容
  • ItemizedOverlay.getIndexToDraw 中的 NullPointerException

    我有一个相对简单的 MapActivity 我正在尝试显示它 给定地图区域内的 营地 列表 我创建了一个自定义 OverlayItem 的子类称为 CampOverlayItem 是一个自定义的 ItemizedOverlay 称为 Cam
  • 通过多个分隔符分割字符串

    我想用空格分割字符串 and 使用单个 ruby 命令 word split将被空格分割 word split 将分裂为 word split 将分裂为 如何同时完成这三件事 word Now is the time for all goo
  • 如何让第一个孩子使用 JSS-Nested

    我使用的是 jss 预设默认值 它带有 jss nested 我可以让 hover 工作 但 first child 对我不起作用 示例代码 summaryItem borderLeft 2px solid red first child
  • ListView 选定索引已更改

    当我从列表视图中单击 项目 时 我需要帮助才能获得响应 知道有 selectedindexchanged 但是当我尝试显示 MessageBox 所以什么也没有发生时 尝试了很多其他事情但没有设法想出一些东西 public partial
  • WatchKit 应用程序的部署目标必须等于 iOS 8.2(之前是 8.3)?

    我刚刚下载了 Xcode 6 3 beta 4 我的 WatchKit 应用程序现在无法构建并出现错误 Embedded Binary Validation Utility Error error WatchKit apps must ha
  • Android应用程序从后台进入前台时如何获取回调?

    如何知道Android中应用程序的后台状态和前台状态 我从一个 Baseactivity 调用中扩展了我的活动 并且 Baseactivity 类扩展了 android Activity 我将代码 appcomeForeground 放入
  • 产品标识符在一部手机上有效,但在另一部手机上无效

    我已经开始测试手机的应用内购买功能 它在我的手机上运行得很好 我提交的每个产品 ID 都工作正常并且返回为有效 但是当我在同事的手机上测试它时 每个产品 ID 都返回为无效 我可能忽略了一些东西 并且我已经遵循了一堆在线教程 但是 stor
  • 如何在 jQuery .load() 之后更新 DOM?

    我想从模板文件 b xhtml 加载html内容 将其插入调用文件 a xhtml 然后更新插入的节点 例如添加 删除属性等 插入部分工作正常 但 DOM 似乎没有更新 这是测试用例 a xhtml 调用的html文件
  • 将不同模式与联合值关联起来的 dhall 惯用方法是什么?

    我试图使用 Dhall 类型来表示 Zuul CI 项目的管道系统 管道可以使用具有不同触发事件的不同连接 我想提供一个默认管道 为每种类型的连接设置正确的触发事件 方式如下 RenderPipeline CheckPipeline con
  • 菜单项的 ClientID

    我在页面上有一个项目 其中有一系列菜单项 从数据库动态生成 作为菜单项 每个 MenuItem 将自身呈现为 a class ctl00 cphContent cphMainContentTitle uxHeaderMenu menuPag