[英]Enabling asynchronous callbacks in asp.net user controls
什么是启用异步... asp.net用户控件中的类似于Ajax的回调的理想方法。 当前的设计具有一个asp.net页面,该页面使用多个用户控件以及间歇的回发和页面重新加载。
我正在尝试在不使用JavaScript的情况下合并无页面重装体验。 这可能吗?
如果没有,在这种情况下我应该如何合并无页面重新加载统一体验?
无法完全避免使用JavaScript。 您可以使用诸如UpdatePanel
类的东西,因此您不必自己编写代码,但是JavaScript仍在幕后使用。
一般来说,ASP.NET不能真正没有JavaScript来运行,因为除按钮外,其他所有控件都使用__doPostBack
JavaScript函数进行回发。
回发
编辑
合并服务器控件的最和谐方法可能是将其包装在UpdatePanel
:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!-- your server control here -->
</ContentTemplate>
</asp:UpdatePanel>
实际上,您的问题有两种可能的解决方案:
到目前为止,您已经提到了许多可以将现有控件包装在UpdatePanel
(链接)中的方法,但这仍然会使面板的内容回传到服务器上,但是迄今为止,最方便,最快的方法是使用最大 , 引人注目的 ,可用性提高。
使用.NET (链接)中的异步回调,您可以通过更多控制权来往与javascript文件之间发送数据;
您可以通过调用在起始页上注册的特定javascript函数来执行服务器端方法:
void Page_Load(object sender, EventArgs e)
{
ClientScriptManager cm = Page.ClientScript;
String cbReference = cm.GetCallbackEventReference(this, "arg","ReceiveServerData", "");
String callbackScript = "function CallServer(arg, context) {" + cbReference + "; }";
cm.RegisterClientScriptBlock(this.GetType(),"CallServer", callbackScript, true);
}
这是通过实现ICallbackEventHandler
接口来实现的,该接口为您提供了两种方法,即:
RaiseCallbackEvent
:当您从javascript客户端发送数据时调用的事件,其中包含一个参数变量。 (通过使用JSON
可以轻松克服单个变量对象。)
GetCallbackResult
:完成服务器端方法后,您可以以字符串形式发送结果,其中包含您可能需要返回的内容。
这非常适合长时间运行的流程,在完全回发之前返回确认或检查简单条件,这将极大地提高可用性。
可以将这两种方法结合起来,并在回发服务器控件(网格,下拉列表等)和检查某些条件(服务器端)之间找到中间值,而不必回发仅查找未满足的某些条件。
如果您正在寻找一种无需编写任何自定义JavaScript即可合并“不重新加载”体验的快速方法,则可以查看ASP UpdatePanel http://ajax.net-tutorials.com/controls/updatepanel-control/
它很容易设置,并为您处理“一切”。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.