【发布时间】:2009-06-03 13:28:32
【问题描述】:
我有一个 ASP.NET 3.5 页面,其中包含一些 AJAX、一些验证器和一些在代码隐藏页面 (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 代码顶部的页面指令中。我真正想要的是让它 FALSE 片刻,以便页面在顶部重置 - 再次,仅当一切正常且仅针对此按钮(页面上还有其他按钮需要页面保留它是滚动位置)。
【问题讨论】: