2010-07-19 54 views
2

我正在編寫一個ASP.NET應用程序。我需要包含一個頁面,用戶可以在其中添加一個包含多組子項目的項目,每個子項目的數量都是無限的。子項本身包含10到15個字段,因此需要一定的UI空間。UI模式允許用戶添加具有無限子項的項目

以我的意思爲例,用戶需要能夠向系統添加業務記錄,包括任意數量的員工記錄和任意數量的資產記錄。

我通常這樣做的方法是在頂部使用帶有一組選項卡的MultiView控件。這些選項卡在多視圖的視圖之間切換。第一個標籤將用於商業記錄,第二個將用於員工記錄,第三個用於資產記錄。員工和資產的視圖最初是空的,添加新員工(或資產)的按鈕。點擊此按鈕後,該頁面將被回發,並且動態添加用戶控件以捕獲員工(或資產)的詳細信息。

有一個保存按鈕可將整個對象圖保存到數據庫中。

這對編程和維護來說非常複雜,我通常會遇到與管理ViewState以應對動態用戶控制相關的問題。顯然,頁面上的ViewState也會變得很大,使得頁面非常慢。

優點是它是一個非常直觀的用戶界面,用戶可以理解,用戶可以添加所有內容並在將所有內容保存到數據庫之前進行檢查。

您能否推薦您可能使用的任何其他UI模式以及任何優點或缺點?

感謝

大衛

回答

1

看一看木瓜,一UX模式庫,可以幫助你解除一些啓示:http://quince.infragistics.com/

關於ViewState的,如果你沒有這樣的狀態MVC ,你有沒有考慮以下技巧:

  • 禁用ViewState的非上下文元素(例如:標籤)
  • 通過定義bzips> base64編碼的自定義處理程序來壓縮ViewState。您會驚訝於您最終在客戶端保存的空間量
  • 將視圖狀態存儲在服務器上,創建一個請求標識,並將此標識綁定到應用程序緩存,並帶有expiry window =到會話壽命(非滑動),然後用你的guid來回替換viewstate。

乾杯, 弗洛裏安

+0

感謝您的ViewState提示。 – David 2010-07-19 09:14:27

0

我喜歡你的使用選項卡中的視圖之間進行導航的多視角控制的設計。對我而言,我曾經有過很多觀點,有時候我需要繞過一些步驟。您幾乎處於嚮導控制的邊緣,但我發現您的每個步驟都太複雜,無法使用官方向導控件。

就我而言,我將每個視圖分隔成一個特定的網頁。使用您的示例,請考慮創建三個頁面:Business.aspx,Employee.aspx和Asset.aspx。如果您有驗證Web表單的代碼,則可以在每個網頁中引用它。我這樣做是因爲在我的情況下,我在每個「步驟」中添加了很多記錄。我不想擔心在每個帖子後面必須正確重新創建視圖狀態的錯誤和空間。您的Business.aspx頁面知道如何照顧自己,並且無需擔心有效的員工記錄或數據即可生效。當我遇到這個問題時,我的多視圖模式可以很容易地將視圖分解成單獨的頁面。噢,說有人直接瀏覽Asset.aspx,我會顯示一條消息,解釋用戶跳過槍,或者製作一個簡單的視圖表單,以允許他們在添加資產之前選擇相應的資源和/或員工。

+0

是的,將用戶體驗分解爲多個保存是另一種選擇。我的缺點是他們在決定是否保存之前沒有機會查看整個事情。 – David 2010-09-23 09:55:08