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

将 NewtonSoft Json dll 添加为包含 web 方法的项目的引用后,您可以使用 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() 函数将外部页面加载到当前页面中,如下所示:

...jQuery

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

...html

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

感谢您的所有反馈,但我认为这是最好的方法。干杯! :)

于 2012-10-19T15:58:49.523 回答
-1

您可以尝试使用 PageMethods():

这是一个简单的教程Simple PageMethods 示例。

你还需要这样做:

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

;)

于 2012-10-17T09:52:48.700 回答