我开始相信我无法通过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在主页上更新对象
答案 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} }。