获取回发时使用的验证组

时间:2011-06-14 12:53:34

标签: c# prerender validationgroup

我正在使用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);

}

1 个答案:

答案 0 :(得分:0)

要检查哪个验证组有效,请致电:

Page.Validate(“newLetter”);

然后检查

Page.IsValid;

这将返回值。 Scott Gu在他的blog

上有更多

编辑你也想知道在prerender事件中点击了哪个按钮,听起来也是如此。虽然您无法从传递到页面预渲染器的参数中找到它,但您可以依赖于page_prerender事件之前发生的按钮事件。在aspx页面代码后面,创建一个成员变量。此变量将用于表示是否应执行预渲染逻辑。

接下来,在两个按钮的单击事件中,设置该局部变量以表示该按钮是否应在page_prerender事件中触发您想要的逻辑。

最后,检查page_prerender方法中的局部变量,并根据新的成员变量将逻辑封装在if语句中。

快乐小径!