Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向用户控件注册脚本_Javascript_Asp.net_Webforms_Ascx_Registerstartupscript - Fatal编程技术网

Javascript 向用户控件注册脚本

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

我正在开发一个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 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