2011-07-26 67 views
0

在我的場景中,假設有一個ASP.Net 4.0 C#頁面,其中包含一個帶有多個輸入的窗體。基於用戶所處的狀態,表單需要以完全不同的方式行事:一些字段可能是必需的,一些字段根本不可見,一些可能具有不同的要求(狀態A可能僅允許數字1-5,狀態B數字5-10)等ASP.Net:基於用戶處理多功能表單的最佳方式

所以,把事情簡單化,讓我們只說對錶格上的任何給定的輸入,我需要確定是否它需要用戶,再根據自己的狀態。對於那些遇到這種情況的人來說,實現這個系統的最好方法是什麼?我可以看到以下選項:

硬編碼 - 難以維持,顯然

自定義數據庫規則框架 - 這似乎是它的工作;然而,根據邏輯的複雜程度來維護會有點痛苦

Windows Workflow Foundation - 這將能夠處理幾乎任何類型的邏輯,並且體面維護,米不知道這將如何表現明智。 (可以在外部存儲在數據庫中)

動態代碼 - 將邏輯存儲在數據庫中並根據用戶直接運行。我從來沒有這樣做過..有可能嗎?

這就是我想出來的,在這一點上,但我希望有人在那裏發現了一個優雅的解決方案來處理複雜的形式是這樣的情況。

謝謝!

回答

1

我從來沒有與WWF的工作,但我也遇到過這樣的情況並實施了一個條目形式運作良好,易於維護,一旦你瞭解系統。

我會阻止你使用硬編碼的邏輯,因爲任何複雜程度將很快成爲無法維護。我嘗試了一種混合方法,其中包括一些硬編碼,但效果不佳。

我結束了創建,正如你所說的,自定義數據庫規則框架。設置配置表單以將用戶組與特定的代碼和功能塊相關聯是一項額外的工作,但最終它對於自動配置自身的所有內容都非常值得。同樣在我的情況下,我能夠將用戶&代碼安裝工作轉移到使用該應用程序的部門的主管,因此這是一大優勢。

1

硬編碼 - 不是很難維持,只是根據規則如何液是。也就是說,如果你的「狀態」是相對固定的,你不會添加新的狀態或改變這些狀態與頁面交互的方式,那麼硬編碼可能沒有問題。在這種情況下,我唯一的建議是將它保存在一個單獨的類中,以便您可以重新使用它,更輕鬆地修改&重新發布等。

如果您想要靈活地更改規則,請創建新的(我把它們看作「角色」),然後將信息存儲在數據庫中會更有意義。

就我個人而言,我使用數據庫方法。它爲我節省了一些應用程序的重新發布,並且允許我爲最終用戶構建額外的接口,以便在角色分配(您所說的「狀態」)方面管理自己的應用程序的能力有限等等。例如,我的最終用戶可以授予他們的一個客戶(基於客戶的登錄)訪問某個報告。或者在你的情況下,他們可以改變你的.aspx使用的一些range-validator的最小號碼。

由於這種方法允許我將一些管理功能委派給最終用戶,因此它允許他們進行即時更改(在一定程度上),並且還爲我節省了大量時間。昨天工作就我自己的待辦事項清單而言。

+0

我實際上是在用戶所在的區域的狀態,但角色的工作太..我只是想要一個具體的方式來區分用戶的情況 – John