将 C# webapp 更改为使用母版页后,DatePicker 不再工作

Posted

技术标签:

【中文标题】将 C# webapp 更改为使用母版页后,DatePicker 不再工作【英文标题】:DatePicker no longer working after changing a C# webapp to use a master page 【发布时间】:2011-01-20 04:02:12 【问题描述】:

我正在开发一个 .Net/C# Web 应用程序,并且一直在使用基于 javascript 的日历来允许用户选择日期。这一直运行良好。

今天我更改了代码以包含母版页,并且从子页调用的日期选择器已停止工作,问题是返回日期的文本框不再有效,因为表单声明现在位于母版页上。

代码是 href="javascript:;" onclick="calendarPicker('form1.TBApplyDate');" title="Select Date from Calendar">Select

“错误行:1 错误:'window.opener.document.form1.TBApplyDate' 为空或不是对象”

我在网上看到了很多收集文本框客户端 ID 并以下面的各种排列方式传递它的示例,但我总是遇到同样的错误。

href="javascript:;" onclick="calendarPicker('ctl00_MainContent_TBApplyDate');" title="Select Date from Calendar">Select

href="javascript:;" onclick="calendarPicker(form1.<%=TBApplyDate.ClientID%>');" title="Select Date from Calendar">Select

任何人都可以就如何成功引用文本框提供任何帮助吗?

提前致谢。

【问题讨论】:

【参考方案1】:

这是因为元素 ID 被母版页“破坏”了

我建议使用jQuery 及其选择器来帮助您获取必要的控件

在 jquery 中,您可以像这样获取控件:

$('[id$=myContrl]')

因此你应该能够做到这一点

<a href="javascript:;" onclick="calendarPicker($('[id$=TBApplyDate]'));" title="Select Date from Calendar">Select</a>

编辑: 你也可以试试这个

<a href="javascript:;" onclick="calendarPicker($('#<%= TBApplyDate.ClientID %>'));" title="Select Date from Calendar">Select</a>

【讨论】:

感谢您的指点,不幸的是我无法让它工作。我引用了 JQuery - 并编辑了如上所示的行。该页面不再出错,但选择日期不会导致任何事情发生。日期弹出窗口保持打开状态,日期不会传输到文本框。还尝试了“[id$=TBApplyDate.ClientID]。我是 ​​Jquery 的新手——整天在谷歌上搜索各种东西,但一无所获! 使用 ClientID 绝对是最好的选择,因为 Asp.Net 可以随时修改它,例如添加母版页、将控件添加到面板等。跨度> 感谢您的帮助 jmein - 您的回答让我朝着正确的方向前进,但我最终得到了它的使用.. 【参考方案2】:

右键单击浏览器并查看源代码并确保文本框的 ID 和 jQuery 例程中指定的 ID 相同。如果没有,请使用@jmein 的答案来获取文本框的正确客户端 ID。

如果它们相同,那么你的 jquery 设置有问题。

【讨论】:

以上是关于将 C# webapp 更改为使用母版页后,DatePicker 不再工作的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net套用母版页后元素ID不一致之个人总结

Jquery 不能在使用 ASP.NET C# 的母版页中工作,并且在不使用母版页的情况下工作正常

如何通过 c# 从子页面将类分配给母版页中的 <li> 之一?

使用 css 和 c# 以编程方式更改母版页中的链接

2017-5-25 母版页

VS2005 使用了母版页技术,可是点运行后母版页的设计内容无法显示,特别是图片就是空白的,该怎么解决呢