gpt4 book ai didi

asp.net - 如何使用 jQuery 和 asp.net 进行 onclientclick 回发

转载 作者:可可西里 更新时间:2023-11-01 02:01:40 27 4
gpt4 key购买 nike

我想在不使用更新面板执行回发的情况下重新创建更新面板回发。执行此操作的通用方法是什么?

例如,在 Stackoverflow 上,当您对某个问题投赞成票或反对票时,它会执行回发以更新数据库,我敢打赌他们没有使用更新面板。

我有什么?

我有一个包含表格数据的表格。当我单击作为整个列的 td 项目时,我想更新数据库并更新页面本身的 gridview。 gridview 显示了表格中所有当前点击的项目,因为它是通过“我们的方法”更新的。

寻找一种好的通用方法,我可以在没有更新面板的情况下用于大量异步回发。

最佳答案

Stack Overflow 的工作方式在两个重要方面与那篇 CodeProject 文章不同。

  • Stack Overflow 正在针对 ASP.NET MVC Controller 操作而不是独立的 ASPX 页面发出 AJAX 请求。您可能会将其视为 ASP.NET AJAX 页面方法的 MVC 模拟。在这两种情况下,ASPX 方法在性能方面都会落后。

  • Stack Overflow 的 AJAX 请求返回 JSON 序列化结果,而不是任意纯文本或 HTML。这使得在客户端处理它更加标准化并且通常更清洁。

例如:当我对这个问题投赞成票时,向/questions/171000/vote 发出了一个 XmlHttpRequest 请求,POST 数据中的“voteTypeId”为 2。

处理请求的 Controller 将我的投票添加到某个表中,然后用这个 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 服务来实现任何集中式功能(例如这个投票示例),而不是页面方法。页面方法似乎稍微更容易编写,但它们也有一些重用缺点,并且往往会提供一种增加安全性的错觉,但实际上并不存在。

这是一个使用网络服务做同样事情的例子(这篇文章的评论实际上导致了你找到的帖子):

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

关于asp.net - 如何使用 jQuery 和 asp.net 进行 onclientclick 回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/171000/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com