我已经在ASP .Net上发了很多关于AJAX的帖子,但我仍然不相信使用updatepanel。即使我们使用updatepanel,系统也会经历一个元素的所有生命周期。
例如,简单地添加两个数字并在文本框中显示它必须经历页面生命周期。我不知道我的理解是否正确。
我们可以使用网络方法或可以使用网络服务等,但问题是我们将无法访问元素/控件。我可以使用JQuery,但我最终遇到了无法访问元素/控件的相同问题。
请帮助我了解我的理解是否正确。 提前致谢。
答案 0 :(得分:1)
是。在Web方法或Web服务中,您无法访问Web控件。但是,如果要为控件赋值,仍可以返回值并分配给控件。
让我们举一个添加两个值的例子。
在textbox1中插入5,在textbox2中插入6。
现在,在add按钮的click事件中,通过JQuery调用web方法,并将textbox1和textbox2的值作为输入参数传递。并返回这两个值的总和。
在Ajax调用的OnSuccess事件上,您可以将结果值分配给要显示总和的标签。
function GetAnswer() {
$.ajax({
type: "Post",
url: "Default.aspx/GetAnswer",
data: "{'value1':'5', 'value2' : '6'}",
contentType: "application/json; charset=utf-8",
success: function (result) {
alert(result.d);
}
});
}
和Web方法:
[WebMethod]
public static int GetAnswer(int value1, int value2)
{
return value1 + value2;
}
答案 1 :(得分:1)
更新面板是在您的网站上实施AJAX的最简单方法之一。在您的本地系统上,您可能会丢弃六个更新面板,它将顺利运行。
但是,相同的更新面板将贯穿整个页面生命周期,并可能在实时环境中造成性能瓶颈。使用更新面板也会增加整体页面大小。
页面方法要好得多,因为我们可以使用一种方法只请求我们感兴趣的信息,而不是回发然后接收HTML标记来完全替换我们的UpdatePanel内容。
回答你的问题:
理解是否正确?
您对ASP.NET AJAX / JQuery的理解是完全正确的。
访问文件后面代码中的控件时出现问题?
只有ASP.NET ajax允许您访问代码隐藏文件中的控件。然而,这带来了性能瓶颈。一旦习惯了其他Javascript框架(如JQuery),您将始终找到解决此问题的解决方法。
我的建议是在性能要求不高的网站上使用ASP.NET AJAX。您也可以在Intranet应用程序中使用它。
但是在性能方面,请使用轻量级的JavaScript库。
答案 2 :(得分:0)
你真的在谈论两种完全不同的方法。 ASP.NET Web表单(使用updatepanels)侧重于服务器端处理。当客户端和服务器确实高度断开连接时,它会尝试假装Web是连接的基础架构。 UpdatePanels只是试图阻止'闪烁',但它们不是最纯粹的AJAX形式(它专注于仅通过网络发送数据,而不是HTML)。
UpdatePanels只是通过AJAX替换大片HTML而不是标准浏览器请求(即页面刷新,你从服务器获得新的HTML)。所以你失去了AJAX的好处,因为你仍在传输大量的文本(在服务器上呈现的HTML)。
另一方面,微软已经推出了其他一些架构。 ASP.NET MVC对'AJAX with jQuery'方法更加友好。单页应用程序(SPA)也是当前的风靡,而微软则通过KnockoutJS实现了这一目标。这些方法专注于渲染HTML客户端,只有来自服务器的数据。您必须更好地了解网络的真正运作方式,但它在灵活性,性能和用户体验方面都有很大的回报。
最终,如果对您来说具有“类似桌面”的体验(没有页面刷新)很重要,那么ASP.NET Web表单可能不是您的最佳选择。