我正在使用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);
}
答案 0 :(得分:0)
要检查哪个验证组有效,请致电:
Page.Validate(“newLetter”);
然后检查
Page.IsValid;
这将返回值。 Scott Gu在他的blog
上有更多编辑你也想知道在prerender事件中点击了哪个按钮,听起来也是如此。虽然您无法从传递到页面预渲染器的参数中找到它,但您可以依赖于page_prerender事件之前发生的按钮事件。在aspx页面代码后面,创建一个成员变量。此变量将用于表示是否应执行预渲染逻辑。
接下来,在两个按钮的单击事件中,设置该局部变量以表示该按钮是否应在page_prerender事件中触发您想要的逻辑。
最后,检查page_prerender方法中的局部变量,并根据新的成员变量将逻辑封装在if语句中。
快乐小径!