0

簡単に言うと、Web コントロール内に ASP.net Textbox があり、Web コントロールの同じマークアップ内の JavaScript 関数によって埋められます。

問題は、webcontrol のサーバー側イベントからその値を読み取る必要があることです。

私はJSコードを別のスクリプトファイルに移動しようとし、それへの参照を追加しました。しかし、やはり同じです。

次を使用して、その関数を呼び出してテキストボックスを埋めようとすると:

Page.ClientScript.RegisterClientScriptBlock //which calls it to early
Page.ClientScript.RegisterStartupScript //which calls it too late ;P

ただし、スクリプト参照がコントロールのレンダリングに含まれる前に実行されます。

registerClientScriptBlock を使用してすべての JS コードを登録する以外の提案はありますか?

Web コントロールのライフサイクルに関連する重要な何かが欠けていると確信しているので、私を啓発してください。前もって感謝します

4

1 に答える 1

0

ティムが示唆したように、これはおそらく出力前にサーバー上で行う方が良いでしょう。

ただし、質問に答えるために、クライアントが呼び出してバックエンドに計算値を通知できるWebサービスを作成できます。これは非常に大まかな例です。

NewWebService.asmx:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void SaveTextBox(string textValue)
{
    <%-- Save the value here --%>
}

YourPage.html:

// Requires jQuery.  
// Code can be refactored to use any library or none at all, if you like

<script>
$("#textBoxId").change(function() {

    var textValue = this.value;

    $.ajax({
        type: "POST",
        url: "NewWebSerivce.asmx/SaveTextBox",
        data: textValue,
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            // do nothing
        }
    });
});
</script>
于 2011-06-07T17:22:43.763 に答える