1

aspx ページに page Page メソッドを記述しました。Web サービス メソッドでは、FindControl メソッドを呼び出してテキスト ボックスを返し、テキスト ボックスの値を取得する必要があります。しかし、私の findControl は MasterPage オブジェクトを使用して反復します。

私のコードを見てください

<script type = "text/javascript">
    function ShowCurrentDateTime() {
        $.ajax({
            type: "POST",
            url: "HRDefault.aspx/GetDate",
            data: '',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function(response) {
                alert(response.d);
            }
        });
    }

    function OnSuccess(response) {  }
</script>

<System.Web.Services.WebMethod()> _
Public Shared Function GetDate() As String
    Dim txt22_2 As TextBox = CType(RenderControls.FindControlRecursive
(Page.Master, "txt22_2"), TextBox)
        Dim str As String
        str = txt22_2.Text
    Return String.Empty
End Function

しかし、使用するとコンパイラエラーが発生しますPage.Master:

非共有メンバーへの参照にはオブジェクト参照が必要です

マスターページオブジェクトまたはページをページメソッドに渡す方法?. したがって、Sared メソッドで使用できます。

PageメソッドでTextboxの値に直接アクセスする方法はありますか? Page Method のいくつかのコントロールにアクセスする必要があります。

4

3 に答える 3

1

HttpContext.Current.Handlerページ オブジェクトへの参照を取得することはできますが、ページのライフ サイクルが PageMethods で実行されないため (ビューステートや要求データがないため)、役に立ちません。いくつかの選択肢があります:

  1. java-script からコントロール値を選択します。必要に応じて、サービス呼び出し時に data パラメータを使用して PageMethod に渡します。
  2. セッション ( HttpContext.Current.Session) またはキャッシュを使用してデータをページに保存し、PageMethod で取得します。新しい GUID をキーとしてキャッシュを使用し、GUID を PageMethod に渡します。
于 2010-10-05T05:32:36.090 に答える
1

についてはわかりません$.ajaxが、これは私にとってはうまくいきます:

<asp:ScriptManager runat="server" EnablePageMethods="true" />
<!-- ...................... -->
<script type="text/javascript">
    function ShowCurrentDateTime() {
        x = document.getElementById('<%= TextBox1.ClientID %>').value;
        PageMethods.GetDate(x, OnSuccess, OnFailure);
    }
    function OnSuccess(response) {
        alert(response);
    }
    function OnFailure(response) {
        alert(response._message);
    }
</script>

およびコードビハインドで:

<System.Web.Services.WebMethod()> _
Public Shared Function GetDate(x as String) As String
    ' do something with x
    ' u can add more params if you need
    Return String.Empty
End Function

構文が大丈夫だといいのですが、vbのことはあまり覚えていません:P

于 2010-10-05T06:01:26.987 に答える
0

すでにデータを投稿しているので、投稿されたテキストボックスの値を読み取るために使用できるRequest.Formコレクションへの参照を取得できるはずです。

于 2010-10-05T07:59:33.487 に答える