- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:
我有一个页面,其中有各种使用 JavaScript 处理的客户端事件。我想将其中一些事件与服务器端事件“同步”,或者以其他方式从代码隐藏调用函数。
我想用 JavaScript 调用的一些函数可能会更改我在页面上的表单中的控件(例如,更改文本框值)。它们也可能会更改我存储在 ViewState 中的某些值,因为我希望某些值通过回发保持不变。我不想进行完整的回发,并且有可能在更新面板中更改的控件。
我目前在我的代码隐藏中使用 JavaScript“调用”函数,方法是单击不可见按钮,这些按钮通过更新面板中的异步回发触发器在我的页面上触发部分回发。
问题:
我的一个客户端事件调用了一个 JavaScript 函数,该函数点击了多个不可见按钮(在点击之间发生的客户端事件可能会影响代码隐藏函数的行为方式)。当我让 JavaScript 单击多个按钮时,对 ViewState 所做的更改似乎不会持续存在,并且只会观察到最后一次单击的更改。
示例:
我可能没有很好地解释这一点,所以这是我所拥有的简化版本(我可以用它重现问题)。
标记:
<asp:Button ID="btnA" runat="server" style="display: none;" />
<asp:Button ID="btnB" runat="server" style="display: none;" />
<div style="background: red; width: 100px; height: 100px;" onclick="AB();"></div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="upForm" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnA" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnB" EventName="Click" />
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
JavaScript:
function AB() {
$('#<%= btnA.ClientID %>').click();
$('#<%= btnB.ClientID %>').click();
}
代码隐藏:
Protected Sub btnA_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnA.Click
ViewState("AB") += "A"
End Sub
Protected Sub btnB_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnB.Click
ViewState("AB") += "B"
End Sub
问题:
最佳答案
我对此进行了测试, View 状态确实会根据部分请求进行更新。2 个连续的部分请求可能存在问题。第一个请求必须在第二个请求触发之前返回才能工作。
viewstate 的工作方式是有一个名为 __VIEWSTATE 的隐藏字段,它会在每个请求上发布。 ASP.NET 使用此数据来维护它需要的任何状态。因此,如果第一个请求尚未返回到浏览器并且浏览器中的 View 状态尚未更新,则不会在第二个请求中发送。
更新面板的响应看起来像这样:
248|updatePanel|ctl00_ContentPlaceHolder1_up|
.......
__VIEWSTATE|/wEPDwUKLTM1OTc4......
然后在客户端更新 View 状态。我会在第二次请求之前检查它是否正在更新。
话虽如此,我认为使用更新面板有点过时了。如果我是你,我会使用 javascript 和 webmetods。看看this .当然,这取决于具体情况。在我看来,您使用的方法是肮脏且不清楚的。
关于javascript - ViewState 在连续的部分回发之间丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085096/
你能定义自动回发和回发吗?它们的区别,哪些Web服务器控件支持自动回发和回发,以及回发和回调之间的区别? 最佳答案 回发:页面向自身执行 POST 请求 autopostback:自动执行回发,例如当
我有一个 ASP.NET 表单,其中包含一个下拉列表,它会在更改时发回服务器,并用一些日期填充第二个下拉列表。 该表单还包含其他字段,其中一些字段在客户端进行验证,另一些字段在服务器端进行验证。 这是
我需要在我的 ASPX 页面中使用 JavaScript 确认函数来确认基于 C# 代码中条件的各种操作,而不是直接连接到按钮单击事件。例如。如果计算出记录数 > 200,则询问“你想继续吗?”然后根
我正在尝试为一个项目构建一个非常具体的搜索页面,但我在处理由单个页面上动态生成的控件调用的多个回发时遇到了很多麻烦。 页面必须像这样工作: 有一个复选框,“详细搜索”,会在选中/取消选中时引起回发。
在 React 组件中如何防止它回发,以便在按下提交按钮时页面不会重新加载。 组件代码如下: const class MyComponent extends React.Component { .
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: prevent postback of HtmlButton in C# 这是我的 JavaScript 函数:
我们有一个 ASP.NET MVC3 网络应用程序。我们生成 HTML5 页面。 现在,我们希望将拖放内容(图片、word文档...)发送到HTML5页面,然后发送到Web服务器在 C# 中处理(内容
我正在使用 jquery tab 并遵循 js 方法,如何以及如何修改它以在回发之间保持 tab 状态? (这会将选项卡重置为 page_load 后的第一个选项卡) $(document).read
我正在 ASP.NET 4.0 网站中使用 AjaxFileUpload。问题是,当我上传文件时,它的 UploadComplete 会触发,从而导致回发到页面。在由 AjaxFileUpload 引
我在表单上有三个单选按钮 - A、B、C。这些选择中的每一个都会使用特定于该选项的数据填充一个下拉列表。加载表单时,我将选项 A 设置为选中(默认)。 当我选择按钮 B 或 C 时,AsyncPost
我正在尝试使用 JQuery 阻止页面回发。 $(document).ready(function() { $('#').click(function() {
这个问题是一个更大页面的一部分,但我简化了代码以提供一个简单的示例来说明我正在谈论的内容。基本上我有一个带有 AutoPostBack="true"的 ASP 下拉列表,我想做一些 javascrip
我在页面上有一个 AJAX 请求。 有没有办法找到在页面上触发 AJAX 调用的时间。在 jQuery 或 javascript 中查找或发起一个函数,在页面上调用 AJAX 请求。 最佳答案 参见
我有一个按钮可以通过回发提交我的表单,我想进行一些评估,如果一切都不好显示错误消息并停止回发。我已设法让我的代码进入我的 onsubmit 函数,但无法停止回发。 表格: 功能: function
我正在混合使用 asp.net 网络表单和 asp.net-mvc。要使用我包含的网络表单 routes.IgnoreRoute("Reports/{*pathInfo}"); 在 public st
我的网页中有文本框,其中有RequiredFieldValidators。这些控件的最底部是按钮提交和清除每次我单击提交按钮时,它都会触发来自RequiredFieldValidators的验证,这很
我有一个用 jquery 做的键盘控制菜单(当我按下时,它标记第二个选项,依此类推...) 但是当我选择我需要的选项后,我想单击 Enter 来调用按钮的 OnClick 方法,就像用户真的单击了它一
我有一个表单,用于更新数据库中的一组现有信息。其中有一个选择框,当选择选项“B”时,它会显示一个隐藏部分,而在选项“A”上,它将隐藏该部分。这很好用。 但是,当我从数据库加载记录集并且选择框设置为选项
我有一个 asp.net 项目,我们称它们为对象。所有对象都在转发器中创建: '/>
我有一个 ModalPopup,它将包含一个 gridview 和 4 个用于将项目输入到 gridview 本身的字段。 是否可以在保持模式打开的同时回发到服务器并更新 gridview? 当您提交
我是一名优秀的程序员,十分优秀!