0
在我的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;
}
這個工作,只要用戶試圖更改爲不同名。但是,如果用戶試圖在不更改名稱的情況下保存表單,則名稱將在數據庫中找到,驗證將阻止保存進行。
如果有人能指向我的某些鏈接來描述解決此問題的最佳方法,我會很高興。儘管這是一種常見的情況,但在提交表單時仍保持唯一的用戶名,但我還沒有找到任何有關如何操作的信息。
完美!我試圖用存儲PersonId的FormView中的HiddenField。但是你的解決方案要優越得多。 –