2012-12-21 51 views
0

我正在研究由多個頁面組成的WebForms應用程序,每個頁面都包含用戶填寫的表單。每個表單對應於一個實體的一部分,這意味着來自一個頁面/表單的數據填充實體字段或其子實體字段的一部分。在WebForms應用程序中進行驗證

舉個例子:在第一頁上填寫個人姓名和出生數據,在第二頁上填寫健康狀況,在第三頁上填寫家庭信息等。 在繼續下一頁之前,數據當然應該是有效的。我的客戶不想處理jQuery或Javascript,所以這被排除了。在這種情況下實施驗證的「最佳實踐」是什麼?

正在使用實體框架4,並且大多數GUI控件都是在HTML中實現的,而不是由WebForms控件實現的。

+0

好吧,'RequiredFieldValidator'和'RegularExpressionValidator'怎麼樣? – BrOSs

+0

但這些是WebControls,不能用於html元素嗎? – Christian

+0

你是對的,我誤解了。 – BrOSs

回答

2

如果您爲輸入使用自定義HTML,那麼您可能將不得不使用一些自定義代碼進行驗證。在服務器端表單處理程序中,您可以驗證輸入並在頁面無效時將頁面呈現給用戶。輸入檢查可能是那樣簡單:

if (string.IsNullOrWhiteSpace(FormCollection["someRequiredInput"]) 

你可以通過你的所有輸入迭代,根據業務邏輯檢查他們,也許建立錯誤的列表。然後在輸入檢查之後,如果錯誤列表不爲空,則將該頁面呈現給用戶,並將錯誤添加到某種類型的佔位符中。如果列表爲空,請繼續處理表單帖子。

即使JavaScript不排除,您仍然想執行服務器端驗證。 從不假設客戶端代碼按預期工作或甚至執行。客戶端驗證不是一種安全措施,它只是一種更好的用戶體驗。服務器端驗證是唯一真正的驗證。 (因此,您可能仍然可以爲添加的UX touch添加客戶端驗證,並且如果客戶端確實不允許JavaScript,那麼他們不會看到這一點,只會使用服務器端驗證。有時也被稱爲在那裏你設計一個Web應用程序仍充分發揮作用,儘管略少UX善良,當用戶關閉客戶端技術「優雅降級」。)

2

我的客戶不希望處理jQuery och [原文] Javascript,所以這是排除。

好。 Javascript是錯誤地方到執行驗證。你用javascript做的任何驗證只是一個性能優化。 只有可以接受的地方纔能真正驗證數據在服務器上。

即便如此,.Net包含了一些您可以使用的方便的Validation控件。其中一個控件是一個CustomValidator,它很容易覆蓋並提供自己的服務器端代碼來執行任何你想要的規則。如果您使用網絡表單,這些控件是一個明顯的選擇。

由於您有多頁面的方法,您可能還需要查看向導控件。

相關問題