我有一个简单的aspx页面与几个TextBoxes和一个提交按钮。某些字段是必需的,按钮下方是ValidationSummary。完整的表单大于屏幕高度,所以必须向下滚动才能到达提交按钮。如果我不填写所有必填字段,并单击提交验证失败,验证摘要显示按钮下方的一些信息消息。验证在客户端发生,并且不发生回发。
所以这一切都按照希望。但令人不安的是,当我点击提交按钮时,页面移动(“跳转”)到顶部位置。要查看验证摘要,必须再次向下移动页面。
我试图将ShowSummary属性设置为false(这没有什么意义):验证仍然有效(无回发),但在这种情况下,页面不会移动到顶部位置。所以问题似乎取决于渲染验证文本。
先谢谢你!
更新:
我上面描述的行为似乎不符合浏览器。我已经在五种不同的浏览器中进行了测试,而且到处都是相同的。
解决方法
我在asp.net(
http://forums.asp.net/p/1545969/3779312.aspx)中提出了这个问题,并得到了两个解决方案的回复。更好的一个是保持滚动位置的这个Javascript:
<script type="text/javascript"> window.scrollTo = function( x,y ) { return true; } </script>
这只是放在页面上,无处可以打电话。
另一个解决方案类似于RioTera的建议(使用MaintainScrollPositionOnPostBack),但是将ValidClientScript =“false”添加到Validators以强制回发。它也有效果,但价格是人为的回发。