我正在使用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);
}发布于 2011-06-14 13:06:07
若要检查哪个验证组有效,请调用:
Page.Validate(“newLetter”);那就查查
Page.IsValid;这将返回值。斯科特·谷的博客上有更多报道
编辑你也想知道哪个按钮是在预录制事件中点击的,听起来也是这样。虽然您无法从传递到页面预分发程序的参数中找到这一点,但您可以依赖于在page_prerender事件之前发生的按钮事件。在后面的aspx页代码中,创建一个成员变量。此变量将用于表示是否应该执行预存器逻辑。
接下来,在两个按钮的单击事件中,将该局部变量设置为指示该按钮是否应该在page_prerender事件中触发所需的逻辑。
最后,检查page_prerender方法中的局部变量,并根据新成员变量将逻辑封装在if语句中。
小径快乐!
https://stackoverflow.com/questions/6343757
复制相似问题