Javascript 向用户控件注册脚本
我正在开发一个asp.net webforms应用程序。它使用主aspx页面创建布局,然后在面板中使用aspx页面显示数据 我需要做的是将javascript与用户控件(ascx文件)一起使用 我认为在主aspx页面上有一个脚本管理器将允许我在.ascx页面上的page_Load函数中注册脚本 以下是我尝试做的一个基本示例:Javascript 向用户控件注册脚本,javascript,asp.net,webforms,ascx,registerstartupscript,Javascript,Asp.net,Webforms,Ascx,Registerstartupscript,我正在开发一个asp.net webforms应用程序。它使用主aspx页面创建布局,然后在面板中使用aspx页面显示数据 我需要做的是将javascript与用户控件(ascx文件)一起使用 我认为在主aspx页面上有一个脚本管理器将允许我在.ascx页面上的page_Load函数中注册脚本 以下是我尝试做的一个基本示例: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Dim
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>
按钮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>
可能您对ScriptManager as对象的调用不正确。您不需要将ScriptManager添加到变量中,只需通过ScriptManager对象直接调用它。首先,确保您的控件有一个
UpdatePanel
作为父控件。
如果这不起作用,请将其保留在那里,然后尝试首先在页面上注册脚本,并检查是否在页面加载时调用了脚本
根据您的评论,最好将页面和母版页作为框架,而不是使用控件来创建子页面 请发布更多关于ASP页面的信息(包括插入控件的区域)好吗?我可能有一个猜测..我们使用的main.aspx页面本质上是系统的布局。Ascx页面在aspx页面中使用-因此,不幸的是,控件不在aspx页面上。非常感谢您的回复。但是,需要执行javascript的页面是ascx(用户控件)页面。另外,谢谢你对我的问题进行编辑!不管怎样,它都会起作用的。您仍然可以使用页面对象作为参数。我刚刚测试过。非常感谢你的回复,拉斐尔已经帮我解决了这个问题。如果我能提高投票率,我会——我只是做了一个账户,所以我没有足够的声誉这么做
<asp:Button ID="Button1" runat="server" Text="Button"/>
<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