0

这听起来很容易,但我整个早上都在为此苦苦挣扎。

我有一个 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>
4

1 回答 1

0

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

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

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

于 2013-05-06T21:15:52.040 回答