2

私が取り組んでいるasp.net webformsアプリケーションがあります。メインの aspx ページを使用してレイアウトを作成し、パネル内の ascx ページを使用してデータを表示します。

私がする必要があるのは、ユーザー コントロール (ascx ファイル) で JavaScript を使用することです。

メインの 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>

また、ページの読み込み時に表示される簡単なアラートを作成しようとしましたが、スクリプトを実行できません。ボタンを押すと、「ReferenceError: logSomething is not defined」が表示されます

どんな助けでも大歓迎です。

キックのために、私はこの方法も無駄にしようとしました:

ScriptManager.RegisterStartupScript(Button1, Button1.GetType(), csConsoleLogSomething, consoleLogScript, True)

ボタン HTML:

<asp:Button ID="Button1" runat="server" Text="Button"/>

これにより、メインの aspx ページへの投稿が行われました。コンソールには何も記録されませんでした。可能であれば、ASP コントロールから離れたいと思います。最終的な目標は、jQuery をこのアプリケーションに統合することです。

4

2 に答える 2

1

最初に、コントロールに asparent があることを確認しますUpdatePanel。それでも問題が解決しない場合は、そのままにしてから、最初にページにスクリプトを登録してみて、ページの読み込み時にスクリプトが呼び出されるかどうかを確認してください。

あなたのコメントに基づいて、MasterPageコントロールを使用してサブページを作成するのではなく、フレームとしてページと a を作成する方がよいでしょう。

于 2014-12-15T19:51:50.347 に答える
1

私はあなたが望む結果に達したと信じています。

私の 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 を変数に追加する必要はありません。ScriptManager オブジェクトを介して直接呼び出すだけです。

于 2014-12-15T19:44:36.830 に答える