我覺得我在開發ASP.NET Webform應用程序時與當前的戰鬥。我經常遇到同樣的問題,而當我最終找到某種解決方法時,我從未完全滿意過結果。如何管理複雜的數據輸入驗證
下面是一個典型的問題的一個例子:
設計需要網格或網格狀的結果集。此結果集是從數據庫中提取的,但是,每個行上都有其他控件沒有數據綁定,但其內容用於將數據插入其他記錄。
一個很好的例子就是顯示一個產品列表,然後根據在數量字段中輸入的值以及每個產品選擇的選項將所選產品添加到購物車。投入混合,你必須允許多條線同時添加到購物車,並且開始變得更加複雜。
讓我們來補充一下,你不能一起選擇某些產品(互斥),你只能選擇一定數量的一種產品,而不能選擇另一種產品,價格可能會在用戶選擇物品時發生變化,你可以根據購買的數量(每件產品和整個訂單)獲得每件商品的總體折扣,你使用的是信用額度,不能超過信用額度,也不能購買比給定商品多的商品任意金額設置在您的賬戶或產品中由您的賬戶代表(認爲某些非政府機構限制您可以購買的藥物數量)等等..等等..
什麼開始作爲添加到購物車的簡單網格變成商業邏輯的絕望混亂,whi然後當然需要驗證並向用戶通知其選擇中的各種錯誤。
如何處理asp.net中非常複雜的數據錄入方案?你甚至開始設計一款軟件來完成這一切?
編輯:
請不要建議改變接口,該接口是沒有問題的。用戶對它很好,他們要求它按照它的方式工作。我正在尋求如何設計和解決實施問題的幫助。
我不確定你是否真的閱讀我的要求。驗證不能逐行進行,因爲有些行不包括其他行。如果我從頭到尾都有問題,那麼我有問題,我之前處理的訂單項有效,但在列表中稍後無效。 – 2010-10-20 20:04:17
我沒有一行一行地說 - 我說規則的規則。一些規則可以在特定的行(或業務對象)上實現。其他規則只能在整個訂單(或業務對象集合)上實施。重要的是每個規則都是自包含的,這有助於代碼的可讀性。 – 2010-10-20 20:29:55
有趣的觀點。我通常從操作的角度來考慮必須在數據上執行的事情,而不是規則和他們使用的數據。但是,這種情況下的規則既是全球性的,也是數據驅動的。但是這給了我一些想法。 – 2010-10-20 21:52:18