4

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

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

谢谢

4

1 回答 1

5

更新:

这是可行的,但需要私人反思:

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,并且正确显示了重复的用户错误。

于 2010-01-15T07:04:29.810 回答