2011-04-05 47 views
0

錯誤的數據我真的不能想出了這個問題更好的描述性標題..但這裏的情況:客戶端驗證會導致顯示在ASP.NET

我有一個包含多重形式和不同的輸入控制..和我有兩個類型的驗證:

  1. 這種類型確保了用戶輸入不違反我的應用程序的限制(需要,最大長度,正則表達式)..而這是在做客戶端使用ASP.NET驗證控件..它由a server side validation執行。

  2. 該類型在更深層次上工作,如數據庫。它檢查條目是否重複,以及在UI級別上無法完成的其他任何檢查。

我使用ValidationSummary控件顯示第一個類型的錯誤和第二個類型錯誤的標籤。我試圖測試它的JavaScript禁用,它工作正常,然後我打開了JS和*問題來了:*

我首先嚐試在db層上引發錯誤(通過輸入名稱已存在)和錯誤顯示在標籤上,一切都很好..現在我嘗試從文本框中刪除名稱,然後按提交,所以我可以引發一個必需的字段驗證器錯誤預期的輸出是「此字段是必需「,但我所看到的是」名稱已經存在「和」此字段是必需的「。

..我認爲這是因爲當ASP.NET RequiredValidator工作時,它不會進行回發,因此數據庫層將永遠不會被驗證,甚至不會清除標籤!

回答

1

聽起來好像您需要添加一些JavaScript,當名稱被更改時或者當嘗試提交表單時,隱藏/刪除「名稱已存在」錯誤消息。

+0

聽起來沒錯,但同時我不能只刪除數據庫錯誤消息,因爲驗證可能會變得更復雜..例如,一個TextBox可能約束1.無重複(在數據庫級別).. 2.可以不會想到另一個Db錯誤和3.沒有空字段..所以如果我只是刪除顯示數據庫錯誤的標籤,數據庫規則仍然可能會違反,用戶不會知道! ..我想我可能需要JavaScript來連接到Db並檢查輸入的數據是否通過了Db約束。再次,問題在於我處理Db異常的方式 – lKashef 2011-04-06 02:29:23

+0

例如我不檢查數據庫如果名稱已經存在..我只是讓應用程序正常運行並處理異常,如果它違反了唯一約束(並且我從StackOverflow的人被告知它是最好的方法而不是連接到db的兩次)對不起,我知道這很複雜,但我真的可以在這裏使用一些幫助。 – lKashef 2011-04-06 02:31:59