无法通过webmethod与控件交互?

时间:2014-03-09 18:02:39

标签: c# jquery .net ajax webmethod

我开始相信我无法通过web方法与asp控件进行交互。我想我可以通过查找调用webmethod的页面,以及从那里查找和更新页面上的控件来完成此操作。

但是在有3天的开放式问题和众多谷歌搜索之后,我似乎无法做到这一点。 还是有吗?如果有人能就此事提供一些有用的信息我真的很感激。

从一个角度来看问题非常简单。

 1. I'm calling a webmethod through ajax, this is happening on say page A.
 2. After a succesful ajax call, i wish to update an ASP control on page A.
 3. The update of the ASP control must happen without a postback hence the ajax.

这真的不可能吗? 另外,如果您对此事有所了解,但您不明白我的问题,请查看我的其他活动问题:通过ajax webmethod在主页上更新对象

2 个答案:

答案 0 :(得分:1)

当你调用web方法时,与asp.net webforms中的按钮点击相比,会发生的情况大不相同。

webmethod不会像标准点击事件那样构建所有控件。

这就是为什么你无法访问页面控件的原因。

此外,即使您有访问权限,这将如何工作?你的webmethod只返回一些数据,而不是整个html代码,所以没有办法更新控件的值服务器端,因为它必须以html呈现。

如果要更新客户端(webbrowser)上的控件的值,只能在收到webmethod的结果时通过javascript执行此操作。您只需通过其id找到控件,并更新其值。

有关详细信息,请查看此帖子: What's the ASP.NET Webservice request lifecycle?

实现您想要做的事情的另一种方法是使用UpdatePanel。我个人不喜欢它,但它允许您访问其中的所有控件,并更新它们的值。 这个控件通过javascript处理客户端更新(但它实际上替换了页面中html的大部分,所以它可能很慢)

答案 1 :(得分:0)

通过AJAX调用Web方法对已经呈现给浏览器的HTML没有影响。

您需要做的是从Web方法返回一些信息,当AJAX调用完成时,使用jQuery使用新信息修改屏幕的外观。

如果你在web方法中所做的事情会导致一个很大的变化,那就是你在jQuery中无法轻易实现的变化(例如重新渲染GridView),你可能想看看{{3} }。