问题描述
|
我正在使用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语句中。
快乐足迹!