【问题标题】:Use jQuery in code behind - callback refreshes page在后面的代码中使用 jQuery - 回调刷新页面
【发布时间】:2013-05-07 10:04:32
【问题描述】:

这听起来很简单,但我整个上午都在苦苦挣扎。

我有一个 asp.Net 页面和相应的代码隐藏页面。我的用户输入一个新密码,然后页面后面的代码检查它是否正常(足够长,一些正则表达式来检查不允许的字符等)。如果密码OK,后面的代码执行sql查询更新数据库。

如果查询成功,我想隐藏密码输入 div 并显示密码成功创建 div,这为我的用户提供了进一步的说明。我总是使用 jQuery 在 php 中轻松完成此操作。

我的问题:我刚才描述的工作都是在服务器端完成的。我可以使用 ClientScriptManager (RegisterStartupScript) 将适当的 jQuery 脚本发送回客户端。很好,但是对服务器的回调会刷新页面,因此页面会刷新并恢复到原始外观。如果您仔细观察,您会看到 div 以我想要的方式隐藏和显示,但在几分之一秒内它们就会恢复到原来的方式 - 我认为是因为回调正在刷新页面。

是否可以在执行对服务器的调用时显示/隐藏页面代码中的 DOM 元素?任何帮助表示赞赏。

编辑

问题出在 asp:button 控件本身。我在以下代码中得到了相同的行为,它根本不使用页面后面的代码。如果我用普通的 HTML 输入控件替换 asp:button 控件,它就可以正常工作。

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>

<script type="text/javascript">

       $('document').ready(function () {

        $('.MyButton').click(function () {
            $('#MyTable').toggle();
        })

    })

</script>

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<asp:Button ID="Button1" runat="server" Text="Button" class="MyButton" />

<table id="MyTable" >
    <tr>
        <td>This</td>
        <td>is</td>
    </tr>
</table>
</asp:Content>

【问题讨论】:

标签: jquery asp.net code-behind


【解决方案1】:

在你的代码后面使用类似:

if (IsPostBack)
{
    // show/hide elements you need based on the processing results
}

这是假设您要显示/隐藏的元素实际上是 ASP.NET 控件。如果没有,您始终可以将它们包含在 &lt;asp:Panel&gt; 控件中并管理以这种方式显示的内容。

【讨论】:

  • 感谢您的回复。很好的建议,但事实证明,asp:button(带有 runat="server")属性自己完成了这一切。我用一个例子编辑了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 2014-07-14
  • 2017-01-19
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多