获取回发中使用的验证组

问题描述

| 我正在使用C#(.NET 2.0)中的旧项目。在此项目中,有两个验证组。一种用于自定义登录控件,另一种用于用户提交新闻稿。我遇到的问题是,当用户提交订阅新闻通讯时,将在page_prerender()方法中触发一些自定义代码,只有在用户尝试登录时才应触发该自定义代码。 我一直在寻找一种解决方案,以识别回发时使用的两个组中的哪一个,以便在需要时可以忽略自定义代码。我的想法是尝试检查两个验证组中的哪一个用于验证。不幸的是,在Google上花费了无能为力的几个小时后,我找不到任何让我知道如何真正知道验证时使用的验证组的信息。有什么办法找出来吗?
<asp:Button ID=\"btn_newsletter\" 
            runat=\"server\" 
            Text=\"Verzend\" 
            ValidationGroup=\"newsLetter\" 
            Meta:resourcekey=\"bnt_newsletter\"
            OnClick=\"handleNewsLetter\"
            CssClass=\"roundedButtonBig\" 
 />


<asp:Button ID=\"LoginButton\" 
            runat=\"server\" 
            CommandName=\"Login\" 
            Text=\"Inloggen\" 
            ValidationGroup=\"lgnUser\" 
            Meta:resourcekey=\"LoginButtonResource1\" 
            CssClass=\"roundedButtonBig\" 
 />
以下代码仅应在按下LoginButton时触发,并且需要在Pre_render()上完成。或者,可以传递正确的ValidationGroup(现在传递null)。
protected void Page_PreRender(object sender,EventArgs e)
{

    //Register custom ValdiationErrorService added errors to JavaScript so they can be added into the popup.
    ValidationErrorService.RegisterServerValidationMessageScript(Page,null);

}
    

解决方法

        要检查哪个验证组有效,请致电:
Page.Validate(“newLetter”);
然后检查
Page.IsValid;
这将返回值。顾伟(Scott Gu)在他的博客上还有更多 编辑您还想知道听起来像在prerender事件中单击了哪个按钮。虽然您无法从传递给页面预渲染的参数中找到答案,但是您可以依靠在page_prerender事件之前发生的按钮事件。在后面的aspx页面代码中,创建一个成员变量。此变量将用于指示是否应执行预渲染逻辑。 接下来,在两个按钮的click事件中,设置该局部变量,以表示该按钮是否应触发page_prerender事件中所需的逻辑。 最后,在page_prerender方法中检查您的局部变量,然后将逻辑封装在基于新成员变量的if语句中。 快乐足迹!