2013-05-06 139 views
0

这听起来很简单,但我一直在努力。在后面的代码中使用jQuery - 回调刷新页面

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

如果查询成功,我想隐藏密码输入div并显示password-successful-create div,这给了我的用户进一步的指示。我一直使用jQuery在php中轻松完成此操作。

我的问题:我刚刚描述的工作都是在服务器端完成的。我可以使用ClientScriptManager(RegisterStartupScript)将相应的jQuery脚本发送回客户端。细腻而华丽,但回到服务器的回调会刷新页面,因此页面会刷新并恢复为原始外观。如果仔细观察,您可以看到div隐藏起来并以我想要的方式显示,但在很短的时间内,它们会回到原来的样子 - 我假设因为回调会刷新页面。

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

编辑

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

<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> 
+0

可能的重复http://stackoverflow.com/questions/11714019/asp-net-hello-world-ajax-post – 2013-05-06 22:16:27

回答

0

在后面使用类似代码:

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

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

+0

感谢您的回复。好的建议,但事实证明,asp:按钮(具有runat =“server”)属性本身就可以完成。我用一个例子编辑了我的问题。 – Stanton 2013-05-06 22:20:28