启用异步的理想方式是什么?asp.net用户控件中类似Ajax的回调。当前设计的asp.net页面使用多个用户控件,具有间歇性回发和页面重新加载功能。
我正在尝试在不使用JavaScript的情况下加入无页面重载的体验。这个是可能的吗?
如果没有,我应该如何在这个场景中加入无页面重新加载的统一体验呢?
发布于 2012-03-30 21:49:16
没有办法完全避免JavaScript。您可以使用像UpdatePanel这样的东西,这样您就不必自己编写代码,但是JavaScript仍然在幕后使用。
一般来说,如果没有JavaScript,ASP.NET就不能真正发挥作用,因为除了按钮之外,每个其他控件都使用__doPostBack JavaScript函数进行回发。
回发可以做到这一点
编辑
将服务器控件扩展到wrap的最好方法可能是将其包装在UpdatePanel中
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!-- your server control here -->
</ContentTemplate>
</asp:UpdatePanel>发布于 2012-03-30 22:08:25
事实上,您的问题有两种可能的解决方案:
更新面板
到目前为止,许多人已经提到,您可以将现有控件包装在一个UpdatePanel (link)中,但这仍然会导致面板的内容回发到服务器,但这是目前为止实现最简单、最快的方法,并且具有最大的、显著的可用性改进。
异步回调
使用.NET (link)中的异步回调,你可以用更多的控制向你的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:完成服务器端方法后,您可以将结果以字符串的形式发送回页面,其中包含您可能需要的任何内容。
这非常适合于长时间运行的进程,在完全回发之前返回确认或检查简单条件,并将带来巨大的可用性改进。
将这两种方法结合起来是可能的,并在回发服务器控件(网格、下拉列表等)和检查某些条件(服务器端)之间找到中位数,而不回发仅发现某些条件未满足的情况。
发布于 2012-03-30 21:50:52
如果您正在寻找一种快速的方法来整合“无需重新加载”的体验,而无需编写任何自定义的JavaScript,那么您可以查看ASP UpdatePanel http://ajax.net-tutorials.com/controls/updatepanel-control/
它很容易设置,并为您处理“一切”。:)
https://stackoverflow.com/questions/9944047
复制相似问题