3

私はasp.netの日付ピッカーを使用しています。次に、ユーザーがjqueryを介して日付をクリックすると、静的イベントが次のように実行されます。

 <script>
    $(document).ready(function () {
        $("#datepicker").datepicker({
            onSelect: function (dateText, inst) {
                $("#<%= lblDate.ClientID %>").text("Are available on " + $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val());

                $.ajax({
                    type: "POST",
                    url: "Schedule.aspx/DisplayAvail",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        // Do something interesting here.
                    }
                });
            }
        });
    });
</script>

コードビハインド:

[WebMethod] 
    public static void DisplayAvail()
    {
         //Grab data from db to check avail from this date
    }

これはうまくいきます。ただし、この静的メソッドからページ レベルのオブジェクトにアクセスする方法はありません。このメソッドからページにデータを送信するにはどうすればよいですか?

4

3 に答える 3

1

こちらをご覧ください。これはNuGet経由で取得できます

http://james.newtonking.com/projects/json-net.aspx

Webmethod を含むプロジェクトへの参照として NewtonSoft Json dll を追加したら、JSONConvert を使用して利用可能な日付をシリアル化し、クライアント側に送信できます。

public IEnumerable<string> AvailableData {get; set;}

[WebMethod] 
    public static void DisplayAvail()
    {
        this.AvailableData = GetRequiredData();
        this.AvailableData = JSONConvert.SerializeObject(this.AvailableData);
    }

クライアント側では、次のことができます。

$(document).ready(function () {
        $("#datepicker").datepicker({
            onSelect: function (dateText, inst) {
                $("#<%= lblDate.ClientID %>").text("Are available on " + $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val());
            $.ajax({
                type: "POST",
                url: "Schedule.aspx/DisplayAvail",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                        var arr = <%= this.AvailableData %>;
                       $.each(arr, function(index, value) {
                            // Do something with the data
                       });

                    });
                }
            });
        }
    });
});
于 2012-10-17T09:41:15.640 に答える
0

私は最善の方法は、JQuery load() 関数を使用して外部ページを現在のページにロードすることだと判断しました。

...Jクエリ

$("#GetData").load("getData.aspx?GetDate=012420012");

...html

<div id="GetData">
...
</div>

フィードバックをお寄せいただきありがとうございますが、これが最善の方法だと思います。乾杯!:)

于 2012-10-19T15:58:49.523 に答える
-1

PageMethods() を使用してみることができます。

これは簡単なチュートリアルの簡単な PageMethods の例です。

また、これを行う必要があります:

 <asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true" />

;)

于 2012-10-17T09:52:48.700 に答える