我想重新创建更新面板回发而不使用更新面板来进行回发.这样做的通用方法是什么?
例如,在Stackoverflow上,当您在问题上向上或向下投票时,它会进行回发以更新数据库,我敢打赌他们没有使用更新面板.
我有什么?
我有一个表数据表.当我单击该项td
作为整列时,我想对数据库进行更新,并在页面本身上更新gridview.gridview显示表中所有当前单击的项目,因为它是通过"我们的方法"更新的.
寻找一个很好的通用方法,我可以用于很多没有更新面板的异步回发.
Stack Overflow的工作方式与CodeProject文章的两个重要方式不同.
Stack Overflow正在针对ASP.NET MVC控制器操作发出AJAX请求,而不是独立的ASPX页面.您可能会将此视为ASP.NET AJAX页面方法的MVC模拟.在这两种情况下,ASPX方法在性能方面都会落后.
Stack Overflow的AJAX请求返回JSON序列化结果,而不是任意明文或HTML.这使得在客户端处理它更加标准化并且通常更清洁.
例如:当我投票给这个问题时,XmlHttpRequest请求被发送到/ questions/171000/vote,POST数据中的"voteTypeId"为2.
处理请求的控制器将我的投票添加到某个表的某个表,然后使用此JSON进行响应:
{"Success":true,"NewScore":1,"Message":"","LastVoteTypeId":2}
使用该信息,此JavaScript负责更新客户端显示:
var voteResult = function(jClicked, postId, data) { if (data.Success) { jClicked.parent().find("span.vote-count-post").text(data.NewScore); if (data.Message) showFadingNotification(jClicked, data.Message); } else { showNotification(jClicked, data.Message); reset(jClicked, jClicked); if (data.LastVoteTypeId) { selectPreviousVote(jClicked, data.LastVoteTypeId); } } };
如果您正在使用WebForms,那么您在我的博客上找到的调用页面方法的示例肯定是正确的.
但是,我建议您考虑使用任何集中功能的Web服务(如此投票示例),而不是页面方法.页面方法似乎稍微容易编写,但它们也有一些重用缺点,往往会提供一种额外的安全性错觉.
这是一个做你发现的相同事情的例子,但是有了web服务(这篇文章的评论实际上导致了你发现的帖子):
http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/