Я довольно новичок в разработке и пытаюсь освоить C# разработку с помощью Blazor. В настоящее время я учусь создавать формы, используя EditForms
, и проверять, используя DataAnnotationsValidator
.
Я успешно сделал большую часть того, что мне нужно сделать для проверки, прежде чем перейти к обработке формы, однако у меня возникли проблемы с одним важным аспектом проверки: форма, над которой я работаю, - это регистрационная форма для нового пользователя. Как правило, при регистрации новых пользователей пользователь может sh повторно ввести значение, например адрес электронной почты или пароль, чтобы убедиться, что они ввели его правильно:
<InputText @bind-Value=User.email id="email" /><br />
<ValidationMessage For=@( () => User.email) />
<label for="confirm">Confirm Email</label><br />
<InputText @bind-Value=User.confirm id="confirm"/><br />
Чтобы проверить эти поля У меня есть класс UserModel, который я создал как User ().
@code
{
UserModel User = new UserModel();
class UserModel
{
[Required]
[EmailAddress(ErrorMessage = "Please enter a valid email address.")]
public string email { get; set; }
[Required]
[EmailAddress(ErrorMessage = "Please confirm your email address.")]
[Compare(email, ErrorMessage = "The email addresses you entered did not match.")]
public string confirm { get; set; }
public string fname { get; set; }
public string lname { get; set; }
public string pwd { get; set; }
public string error = "";
public void Submit()
{
}
}
В документации Microsoft для DataAnnotationsValidator
я обнаружил класс CompareAttribute
, который, согласно документации, предоставляет атрибут, который сравнивает два свойства ". Я верю, что это будет делать то, что мне нужно, но у меня возникли проблемы с его использованием. Compare
принимает аргумент otherProperty
, который, как я считаю, будет другим пользовательским вводом, который я пытаюсь сопоставить, однако я не могу понять, как передать предыдущий ввод в качестве этого аргумента.
Я пробовал email,
, однако ссылка на объект обязательна. Не похоже, что я бы хотел ссылаться на экземпляр класса внутри самого класса, поэтому я попытался this.email
, но получил ошибку «Ключевое слово« this »недоступно в текущем контексте».
Если бы кто-нибудь мог помочь мне найти правильный способ использования класса Compare
в моей ситуации, я был бы очень признателен. В противном случае, если я лаю не на том дереве, пожалуйста, дайте мне знать. Спасибо!