我有这段代码:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#refreshDocuments').click(function () {
var areaId = 42;
$.ajax({
type: "POST",
url: "Test.aspx/TimeTest",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d);
}
});
});
});
</script>
...................
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lblTime" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
................... test.cs中
[System.Web.Services.WebMethod]
private void TimeTest()
{
lblTime.Text = DateTime.Now.ToString();
UpdatePanel1.Update();``
}
按下此按钮时会调用TimeTest方法:
<id="refreshDocuments">Test</a>
我的问题是: 如何更新标签以满足我的需求?
谢谢!
答案 0 :(得分:3)
其实我的意思是一个标签(我的错误)。一直以来,您无法在TimeTest
方法中刷新UpdatePanel。此外,此方法必须为public static
,以允许从JavaScript中使用jQuery.ajax
方法异步调用它。在此处阅读更多内容:Using jQuery to directly call ASP.NET AJAX page methods
您可以做的是使用LinkButton
控件并将其注册为UpdatePanel的AsyncPostBackTrigger
,并在此LinkButton的Click事件处理程序中执行所有工作人员
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lblTime" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="refreshDocuments" />
</Triggers>
</asp:UpdatePanel>
<asp:LinkButton runat="server" ID="refreshDocuments"
Text="Click Me" OnClick="refreshDocuments_OnClick" />
protected void refreshDocuments_OnClick(object sender, EventArgs e)
{
//refresh controls in UpdatePanel1
//UpdatePanel1 will be refreshed automatically
}