不確定這是否是一個選項 - 取決於你在哪裏(真的)想要異步,Javascript聽起來很理想。
簡單的例子:
鑑於一個ASP.Net形式:
<form id="form1" runat="server">
<div>
<asp:Label runat="server" ID="Status" />
</div>
</form>
與jQuery:
$(function() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "foo.aspx/HelloWorld",
data: {}
}).done(function (d) {
$("#<%:Status.ClientID%>").append("..." + d.d);
}).fail(function (f) {
//....
}).always(function (a) {
//....
});
});
web窗體 「代碼隱藏」(代表「 foo.aspx「),使用WebMethod:
protected void Page_Load(object sender, EventArgs e)
{
Status.Text = "Initial hello at " + DateTime.Now;
}
[WebMethod]
public static string HelloWorld()
{
Thread.Sleep(5000);
return "And hello again from WebMethod " + DateTime.Now;
}
您應該看到在5秒後瀏覽器中的文字 「更新」,沒有刷新/回傳:
Initial hello at 11/22/2014 4:40:55 PM...And hello again from WebMethod 11/22/2014 4:41:00 PM
H個...
斯蒂芬,他沒有使用經典ASP,儘管標籤。 – 2014-11-22 22:50:27
@Stephen:你確定「在處理程序完成之前什麼都不能發送」?如何創建部分響應http://www.codeproject.com/Articles/388028/ASP-NET-page-partial-rendering – 2014-11-22 23:00:21
@WiktorZychla:的確,您可以刷新部分響應或流式響應。但是,您無法發送整個HTML頁面,然後更改發送的HTML。 – 2014-11-22 23:08:38