首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止PostBack事件处理程序的触发

如何防止PostBack事件处理程序的触发
EN

Stack Overflow用户
提问于 2010-05-03 20:32:51
回答 1查看 1.9K关注 0票数 0

我有一个自定义类(ServerSideValidator.vb),它在服务器端验证用户输入(它不使用在验证器中内置的任何.NET,因此Page.Validate()对我来说不是一个选项)。我在page.IsPostback事件上调用Validate()方法,类执行时没有任何问题

我的问题是,当验证失败(返回false)时,我希望停止回发事件处理程序的触发,但是加载页面以及它们中的所有控件和用户输入值。如果我这样做了,Response.End(),页面就会变成空白。我可以编程地指示页面转到上一页(回发前的原始表单),但是它失去了所有的用户输入。

我想在文件后面的页面代码中创建一个全局布尔变量,并在执行任何回发方法之前检查值,但是这种方法与我提供类内部所有功能的计划不同。页面对象被引用到ServerSideValidator。

看起来,我在Page类中遇到的所有与回发相关的属性/变量都是“Readonly”,我无法分配值来控制/防止回发事件的触发。

有关于我如何做到这一点的白痴吗?如果您需要进一步的信息,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2010-05-03 20:39:05

每次回发到同一个页面并在那里进行验证可能更容易,特别是在页面加载事件上。如果验证失败,您已经在正确的页面上,不必转到前一页。如果验证成功,那么如果您愿意,可以重定向到另一个页面,在这种情况下,您可能不需要任何数据。

编辑:--这并不是您所要求的,但是我有一种感觉,它会在安装到现有的ASP.NET验证设计时做您想做的事情。见http://www.dotnetcurry.com/ShowArticle.aspx?ID=197https://web.archive.org/web/20211020145934/https://www.4guysfromrolla.com/articles/073102-1.aspx

基本上,您像现在一样创建了一个自定义类,但是继承了BaseValidator。要遵循您的设计,您可以创建一个名为ValidationType的枚举,它具有字母、字母数字等。在您的自定义类中,创建一个名为ValidationType的属性,该属性使用ValidationType枚举。当然,您必须添加所有验证逻辑。然后,在您的aspx页面中,您可以将您的自定义验证器添加到页面中,并设置ValidationType=“字母表”等,并提供完全的IntelliSense支持。

由于您使用BaseValidator,所有常规的验证技术都可以工作,包括Page.Validate()、Page.IsValid等。如果您愿意,甚至可以创建客户端验证JavaScript。

说了这番话之后,也许有人已经为你做了大部分的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2761017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档