Показать метку сообщения об ошибке CreateUserWizard - PullRequest
4 голосов
/ 10 января 2010

У меня есть элемент управления CreateUserWizard, и я выполняю проверку на стороне сервера. Есть ли способ заставить сообщение об ошибке CUW отображаться из-за кода? В настоящий момент, если пользователь вводит повторяющееся имя, отображается свойство DuplicateUserNameErrorMessage для элементов управления. Однако, если пользователь выключил JavaScript или отправил пользовательский заголовок POST с недопустимыми символами, я полагаюсь на свою проверку на стороне сервера, чтобы уловить ошибку. Как я могу затем отобразить то же сообщение об ошибке в метке ErrorMessage элемента управления, а не создавать собственную метку и подделывать ее?

Редактировать: просто чтобы уточнить, проверка на стороне сервера проверяет различные аспекты. Дублированный пользователь был просто примером того, когда метка ErrorMessage вызывается элементом управления.

Спасибо

1 Ответ

5 голосов
/ 15 января 2010

Обновление:

Вот то, что будет работать, но требует личного размышления:

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 и публикуете повторяющееся имя? AВы можете воспроизвести эту проблему на простой странице или есть какие-то дополнительные факторы, которые могут повлиять на нее?

Я попытался с простым CUW и отключенным javascript, и правильно отображалась ошибка пользователя-дубликата.

...