2

我正在使用 C# (.NET 2.0) 中的旧项目。在这个项目中有两个验证组。一种用于自定义登录控制,另一种用于用户提交到时事通讯。我遇到的问题是,当用户提交订阅时事通讯时,一些自定义代码会在 page_prerender() 方法中触发,只有在用户尝试登录时才会触发。

我一直在寻找一种解决方案来识别回发时使用了两个组中的哪一个,这样我就可以在需要时忽略自定义代码。我的想法是尝试检查两个验证组中的哪一个被用于验证。不幸的是,在谷歌上花了几个小时徒劳无功之后,我找不到任何东西让我知道如何在验证时真正知道使用了哪个验证组。有什么办法可以查到吗?

<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);

}
4

1 回答 1

0

要检查哪个验证组有效,请调用:

Page.Validate(“newLetter”);

然后检查

Page.IsValid;

这将返回值。Scott Gu 在他的博客上有更多内容

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

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

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

快乐的足迹!

于 2011-06-14T13:06:07.917 回答