На моей странице asp у меня есть FormView, который используется для отображения и редактирования информации о человеке.У каждого человека должно быть уникальное имя, которое я проверяю с помощью CustomValidator:
<asp:FormView runat = "server"
ID = "PersonFormView"
DefaultMode = "Edit"
DataSourceID = "onePersonDs"
DataKeyNames = "PersonId">
<EditItemTemplate>
...
<asp:TextBox runat = "Server"
Id = "Name"
Text = '<%# Bind("Name") %>'/>
...
<asp:CustomValidator
ID = "UniqueNameValidator"
runat = "server"
Display = "Dynamic"
ControlToValidate = "Name"
ErrorMessage = "Person already exists!"
OnServerValidate = "UniqueNameValidator_ServerValidate" />
Является ли лучший подход для использования специального валидатора для этого?Мой UniqueNameValidator_ServerValidate выглядит следующим образом:
public void UniqueNameValidator_ServerValidate(
object sender, ServerValidateEventArgs e)
{
// Check for a duplicate.
var items = from r in db.Persons
where r.Name == e.Value
select r;
e.IsValid = items.Count() == 0;
}
Это работает до тех пор, пока пользователь пытается изменить имя с другим .Но если пользователь пытается сохранить форму без изменения имени, имя уже будет найдено в базе данных, и проверка предотвратит сохранение.
Я был бы рад, если бы кто-то мог указать мне некоторые ссылки, описывающие лучший способ решения этой проблемы.Несмотря на то, что это распространенный сценарий, сохранение уникального имени пользователя и возможность отправки формы, я не нашел информации о том, как это сделать.