【问题标题】:Set Session variable and prevent postback on ASP.NET button click设置 Session 变量并防止在 ASP.NET 按钮上单击回发
【发布时间】:2012-11-12 15:26:43
【问题描述】:

我有一个 ASP 按钮,当点击它时,需要设置一个会话变量并运行一些 javascript 代码来弹出一个窗口。我让这一切正常工作,但是当这种情况发生时,主页会回发并跳回页面顶部。如何防止回发并仍然设置会话变量并调用 javascript?使主窗口保持在同一位置?

【问题讨论】:

  • 您为什么要为此使用 ASP .NET 按钮?只需使用一个按钮。
  • 你可以在cookie中设置信息吗?然后你可以用 javascript 完成所有操作,而不必担心回发......
  • 为什么要使用会话变量?你能再解释一下吗
  • 该按钮属于个人资料页面。单击时,它会弹出一个包含城市列表的窗口。它加载配置文件已经属于会话变量的城市,此时弹出窗口读取会话并检查已经属于配置文件的城市。然后用户可以通过选择/取消选择城市并单击保存,关闭弹出窗口并将所选列表保存到配置文件中。这一切都很好,但客户希望页面停止将它们发布回页面顶部。他们希望在完成后留在页面上的同一位置

标签: asp.net


【解决方案1】:

使用 ajax 进行操作,将 ASP.NET 按钮设置为仅在客户端上运行,将 onClient 事件设置为:

onclient="SetSession(); return false;"

并在 SetSession() JavaScript 函数中调用服务器方法,例如简单的 ashx,如果服务器调用成功,那么您可以调用您需要的其他 JavaScript。 (使用 jQuery 更容易):

function SetSession()
{
  jQuery.ajax({
                url: "SetServerSideSession.ashx", 
                success: function (data) 
                {  
                  AdditionalJavascript();
                }
             });
}

【讨论】:

  • 诚然,我对 ajax 或 .ashx 页面不太熟悉,我该如何使用它?
  • 对于它的价值,会话变量需要设置为来自文本框的文本
【解决方案2】:

要在回发后保持相同的位置,您可以使用 Page.MaintainScrollPositionOnPostBack

Page.MaintainScrollPositionOnPostBack Property

【讨论】:

  • 我试过了,但它不起作用...可能与母版页有关?
  • 尝试在您的 web.config 中设置 - 请记住,它会影响您的整个网站
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 2012-03-29
  • 2014-10-01
  • 2013-11-02
  • 2017-05-31
  • 2011-05-03
相关资源
最近更新 更多