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 に答える