我有一个带有一些AJAX的ASP.NET 3.5页面,一些Validators和一些在代码隐藏页面(VB.NET)中完成的业务规则验证。
当检测到错误时,验证器将焦点设置为'违规'控件。
当违反业务规则时,我使用以下代码“动态”生成一些javascript并执行它以模拟Winforms“MessageBox.Show”功能:
Sub DisplayMessages()
Dim lblError As New Label
lblError.Text = "<script language='javascript'>" & Environment.NewLine & "window.alert('"
+ strError + "')</script>"
Page.Controls.Add(lblError)
strError = ""
End Sub
(必要时适当调用该子程序)
现在,当用户点击“保存”按钮并且一切正常时,页面会在“保存”按钮所在的底部向下滚动。我想通过将页面重新设置为顶部来向用户表明事情已成功完成。
我尝试使用另一个子例程来调整之前使用的javascript - 添加控件似乎没有用,所以我试着把原始代码放进去执行ad hoc:
Sub ScrollPageToTop()
Dim strScroll As String
strScroll = "<script language='javascript'>" & Environment.NewLine & "window.scrollTo(0,0);</script>"
ClientScript.RegisterStartupScript(Me.GetType, "ScrollToTop", strScroll.ToString)
End Sub
在“btnSave.Click”代码的末尾,如果一切正常,则调用该子例程。
我得到的是页面滚动到顶部,然后回到单击“保存”按钮时的位置。
由于各种原因,'MaintainScrollPositionOnPostback =“True”'位于.aspx代码顶部的Page指令中。我真正喜欢的是将这个错误做一会儿,以便页面重置在顶部 - 再次,只有当一切正常并且仅用于此按钮时(页面上还有其他按钮需要页面保持它是滚动位置)。
答案 0 :(得分:0)
假设成功保存,您没有其他理由维持当前表单的状态,您只需重定向到同一页面并传递成功标记。
Response.Redirect ("CurrentPage.aspx?Saved=Y");
使用querystring参数可以显示您的成功消息。
您可能需要更有创意才能构建重定向网址以捕获您正在编辑的项目,但这可能对您有用。