2010-01-10 137 views
4

我有一个CreateUserWizard控件并正在执行服务器端验证。有没有办法强制CUW的错误信息从代码隐藏中显示?目前,如果用户输入重复名称,则会显示控件DuplicateUserNameErrorMessage属性。但是,如果用户关闭了JavaScript,或发送了一个自定义的POST标题,并带有无效字符,我依靠服务器端验证来捕获错误。那么我怎么能在控件的ErrorMessage标签中显示相同的错误消息,而不是创建自定义标签并伪造它?显示CreateUserWizard的错误消息标签

编辑:为了澄清,服务器端验证测试各方面。重复的用户只是ErrorMessage标签被控件调用时的一个例子。

感谢

回答

4

更新:

这里是东西,将工作,但需要私人反思:

void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e) { 
    typeof(CreateUserWizard).GetField(
     "_unknownErrorMessage", 
     System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) 
     .SetValue(sender, "My error message"); 
    e.Cancel = true; 
} 

基本上,你这个字段设置为你想要的错误消息,并且的CreateUserWizard精选它起来。作为私人反思,它不是一种“支持”技术,但至少可以考虑一个选择,即使没有其他方法可行。


我不认为你应该做任何特别的工作。通常,支持客户端验证的任何内容都具有匹配的服务器端验证逻辑。事实上,对于重名的东西,只有服务器端验证,所以我不认为关闭JavaScript应该会影响场景。

当你禁用JavaScript并且发布重名时,你到底看到了什么?是否可以通过简单的页面重现此问题,或者是否存在可能影响该问题的其他因素?

我尝试了一个普通的CUW并禁用了JavaScript,并且重复的用户错误被正确显示。

+0

对不起,我想我应该更清楚一点。 Duplicate用户只是显示的ErrorMessage标签的一个例子。我的服务器端验证检查无效字符,可疑脚本等。如果这些被标记,我想使用相同的ErrorMessage标签来显示一条消息。我已经能够访问CUW中的ErrorMessage标签,但我无法强制它从代码隐藏中显示。 – keyboardP 2010-01-15 16:26:18

+0

你如何连接你的服务器端验证?你使用自定义的验证控件吗? – 2010-01-15 18:31:54

+0

我正在捕捉(CUW的)* CreatingUser *事件并检查每个正在提交的文本框。来自每个文本框的文本被放置在自定义验证函数中,如果有任何可疑内容,则返回false。如果此函数返回false,那么我希望CUW中的ErrorMessage标签显示自定义消息(并且我取消了CreatingUser事件)。 – keyboardP 2010-01-15 18:43:50