0

これはポストバックの問題です(この問題を解決するためにクライアント側を使用したくないので、ポストバックを防止してからクライアント側を使用する方法が必要です)、クリックするとボタンがあり、からjavascript関数を呼び出しますコードビハインドですが、これを行う前にページをポストバックします。質問は:ポストバックステップをスキップしてjavascript部分にジャンプするにはどうすればよいですか?

<script type="text/javascript">
    function hello(name) {
        alert("hello world from javascript " + name)
        return false;
    }
</script>
 </head>
 <body>
<form id="form1" runat="server">
<div>
    <asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>

コードビハインド:

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim Myname As String = "myName"
    Dim cstype As Type = Me.GetType()
    Page.ClientScript.RegisterStartupScript(cstype, "MyKey", "hello('" & Myname & "');", True)

End Sub
4

4 に答える 4

3

サーバー側ハンドラーの代わりにクライアント側ハンドラーを使用します。Button1_Clickjs呼び出しをOnClientClick属性値として削除して追加します。

<asp:Button ID="Button1" runat="server" Text="Button" 
            OnClientClick="return hello('myName');" />

または、サーバーコントロールをまったく使用しないでください。

<button id="button1" onclick="return hello('myName');">Button</button>
于 2012-06-15T14:30:27.330 に答える
1
  1. ボタンクリックイベントの前に、このスクリプトをpage_loadまたはメソッドに登録する必要があります。

    Button1.Attributes.Add( "onclick"、 "return hello()");

  2. このようにコードビハインドでスクリプトを登録するhelloメソッドを呼び出す前にreturnを使用します

    Page.ClientScript.RegisterStartupScript(cstype、 "MyKey"、 "return hello('"&Myname& "');"、True)

  3. ポストバックが必要ない場合は、Button1_Clickからすべてのステートメントを削除します。または、サーバー側のクリックイベントのバインドを解除します

    Protected Sub Button1_Click(ByVal sender As Object、ByVal e As EventArgs)はButton1.Clickを処理します

サブ終了

于 2012-06-15T14:20:11.347 に答える
1

ASPボタンではなくHTMLボタンを使用してみませんか

<input id="Button1" type="button" value="button" runat="server" />

そしてサーバー側は次のようなものを書きます

Button1.Attributes.Add("onclick","hello()");
于 2012-06-15T14:25:20.307 に答える
1

あなたはOnClientClickボタンのイベントを使用しようとしていると思います:

<asp:Button ID="Button1" OnClientClick="return hello('world')" runat="server" Text="Button" />
于 2012-06-15T14:33:34.653 に答える