向用户控件注册脚本
Registering script with User Control
我有一个 asp.net 网络表单应用程序,我正在开发。它使用主 aspx 页创建布局,然后使用面板中的 ascx 页来显示数据。
我需要做的是将javascript与用户控件(ascx文件(一起使用。
我认为在主 aspx 页面上有一个脚本管理器将允许我在 .ascx 页面上的Page_Load函数中注册脚本。
以下是我正在尝试执行的操作的基本示例:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim csConsoleLogSomething As String = "ConsoleLogSomethingScript"
Dim consoleLogScript As String = "function logSomething() { console.log('SOMETHING'); }"
Dim cs As ClientScriptManager = Me.Page.ClientScript
cs.RegisterStartupScript(Me.GetType(), csConsoleLogSomething, consoleLogScript, True)
'I have also tried using: Dim cs As ClientScriptManager = Me.Parent.Page.ClientScript
End Sub
以下是 ascx 页面上的 HTML:
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0px;">
<tr>
<td>
<input id="btnWTF" type="button" onclick="logSomething()" value="DO SOMETHING FOR THE LOVE OF MOSES" />
</td>
</tr>
</table>
下面是主 aspx 页上的脚本管理器声明:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableTheming="True" EnablePageMethods="true">
</asp:ScriptManager>
我还尝试创建一个简单的警报以在页面加载时出现,但我无法执行任何脚本。当我按下按钮时,我得到"引用错误:日志未定义某些内容">
任何帮助将不胜感激。
对于踢球,我也只是尝试了这种方法无济于事:
ScriptManager.RegisterStartupScript(Button1, Button1.GetType(), csConsoleLogSomething, consoleLogScript, True)
按钮 HTML:
<asp:Button ID="Button1" runat="server" Text="Button"/>
这导致向 aspx 主页发布帖子。控制台中未记录任何内容。如果可能的话,我想远离asp控件。最终目标是将jQuery集成到此应用程序中。
我相信
我已经达到了你想要的结果。
我的 Aspx:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableTheming="True" EnablePageMethods="true">
</asp:ScriptManager>
<div>
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0px;">
<tr>
<td>
<input id="btnWTF" type="button" onclick="logSomething()" value="DO SOMETHING FOR THE LOVE OF MOSES" />
</td>
</tr>
</table>
</div>
</form>
我的代码隐藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), "function logSomething() { alert('SOMETHING'); }", True)
End Sub
可能是您对脚本管理器作为对象的调用不正确。您不需要将 ScriptManager 添加到变量中,只需直接通过 ScriptManager 对象调用它即可。
首先,确保控件具有作为父控件的UpdatePanel
。如果这不起作用,请将其保留在那里,然后首先尝试在页面上注册脚本,并检查页面加载时是否调用了该脚本。
根据您的注释,最好将页面和MasterPage
作为框架,而不是使用控件来包含子页面。
相关文章:
- 在特定位置注册客户端脚本
- Microsoft JScript运行时错误:只能注册格式正确的脚本标记
- 允许订阅者列表注册,但禁止脚本
- 注册多个脚本取决于 jquery 到 wordpress 主题
- 在 MVC4 中注册启动脚本
- 如何在 JavaScript 中为嵌套脚本标记追加注册回调
- 注册客户端脚本不适用于设置数组值
- 在 IE8 中将文件系统对象注册为安全的脚本
- 将值分配给页面客户端脚本中的已注册隐藏字段
- 向用户控件注册脚本
- 注册脚本引用时,其中一个会禁用另一个
- 正在JS文件中注册用于事件验证的脚本
- 在ASP.NET应用程序中使用母版页时注册客户端脚本块时出错
- 无法注册启动脚本
- 如何让我的注册脚本检查付款验证
- 登录&注册相同的脚本,但其中一个没有'不起作用
- 注册/排队脚本
- 使用RegisterClientScriptBlock在页面末尾注册一个脚本,以避免sys undefined错误
- 如何在网页底部注册客户端脚本资源,以提高加载时间
- 客户端脚本注册脚本一行