我正在使用asp.net datepicker。然后当用户通过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
}
哪个工作正常。但是,从这种静态方法中无法访问页面级对象。如何将此方法的数据发送到页面?
答案 0 :(得分:1)
看看这里。你可以通过NuGet获得这个
http://james.newtonking.com/projects/json-net.aspx
一旦您将NewtonSoft Json dll添加为包含webmethod的项目的引用,您就可以使用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
});
});
}
});
}
});
});
答案 1 :(得分:0)
我决定最好的路径是使用JQuery load()函数将外部页面加载到当前页面中:
... Jquery的
$("#GetData").load("getData.aspx?GetDate=012420012");
... HTML
<div id="GetData">
...
</div>
感谢您的所有反馈,但我认为这是最好的方式。干杯! :)
答案 2 :(得分:-1)
您可以尝试使用PageMethods():
这是一个简单的教程Simple PageMethods example.
你还需要这样做:
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true" />
)