2013-05-23 2 views
0

Я лично нахожу смутные сообщения об ошибках болью. В моем новом практическом проекте я пытаюсь добавить дополнительную проверку на ввод пользователя. Тем не менее, ASP.NET MemberhipCreateStatus имеет членов; например InvalidEmail, который заботится о некоторых из этих областей, когда используется метод CreateUser.Использование дополнительной проверки с членством в ASP.NET Создание статуса

Я могу сделать заявление if или Regex на отправленном письме до ввода адреса Memberhip.CreateUser Method. Тем не менее, я не уверен, с чего начать:

Я знаю, что этот вопрос немного субъективен, но мне неинтересно узнать позже, что есть лучший способ, и если вы только начинаете, это может быть спасатель.

Должен ли я создать дополнительный метод проверки для проверки очень специфических ошибок форматирования в письме в дополнение к проверке системы. Как вы можете видеть, сообщение об ошибке не говорит, почему оно недействительно.

Также возможно создать собственное перечисление, например, адрес электронной почты содержит знак подчеркивания, который я могу подключить к MembershipCreateStatus? Если да, то как?

Вот мой пример кода, сокращенно:

public string GetErrorMessage(MembershipCreateStatus status) 
{ 

switch (status) 
{ 

case MembershipCreateStatus.InvalidEmail: 
return "The e-mail address provided is invalid."; 

default: 
return "Go to jail!!"; 
} 
} 

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
try 
{ 
Membership.CreateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text); 
} 
catch (MembershipCreateUserException ex) 
{ 
ltrStatusMsg.Text = GetErrorMessage(ex.StatusCode); 
} 
catch (HttpException ex) 
{ 
ltrStatusMsg.Text = ex.Message; 
} 
} 

Спасибо моим друзьям.

ответ

1

Существует множество способов кожи кошки. Конечно, вы можете сделать свою собственную проверку перед вызовом Membership.CreateUser. Ваш метод проверки может вызывать MembershipCreateUserException и повторно использовать один из существующих кодов состояния или вызывать другое исключение. Исключение, которое вы выбрали, может быть настраиваемым исключением, или вы можете повторно использовать существующий тип исключения, например ValidationException.

try 
{ 
    ValidateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text); 
    Membership.CreateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text); 
} 
catch (MembershipCreateUserException ex) 
{ 
    ltrStatusMsg.Text = GetErrorMessage(ex.StatusCode); 
} 
catch (ValidationException ex) 
{ 
    ltrStatusMsg.Text = ex.Message; 
} 
catch (Exception ex) 
{ 
    // log exception ... 

    ltrStatusMsg.Text = "An unexpected error occurred while creating the user"; 
} 

... 
private void ValidateUser(...) 
{ 
    if (... not valid ...) throw new ValidationException("some suitable message"); 
} 
0

В моем CustomMembershipProvider я не использую метод CreateUser, у меня есть метод CreateUser как часть кода объекта бизнес-объекта User с параметром вывода (Custom Enum) с различными недопустимыми (или действительными) результатами.

+0

Да, я просто пытался добавить Enum, но понял, что должен сделать переопределение. Это немного выше моей головы. Как ты это сделал? – Asynchronous

+0

Я только что проверил, и на самом деле, я даже не использую метод CreateUser в поставщике членства, я делаю членство провайдера легким, прежде всего для проверки. Я обновил свой ответ. –

Смежные вопросы