在后面的代码中使用jQuery - 回调刷新页面

时间:2013-05-06 21:09:07

标签: jquery asp.net code-behind

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

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

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

我的问题:我刚才描述的工作都是在服务器端完成的。我可以使用ClientScriptManager(RegisterStartupScript)将适当的jQuery脚本发送回客户端。精细和花花公子,但回调到服务器刷新页面,所以页面刷新并恢复到原始外观。如果你仔细观察,你可以看到div隐藏并显示我想要的方式,但在不到一秒的时间内它们会回到它们最初的方式 - 我假设因为回调正在刷新页面。

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

修改

这是asp:按钮控件本身就是问题。我在下面的代码中得到了相同的行为,它根本不使用代码隐藏页面。如果我用普通的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>

1 个答案:

答案 0 :(得分:0)

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

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

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