2016-08-30 59 views
0

我正在創建一個收集客戶信息並將其插入數據庫的Web表單。客戶可以有3種帳戶:結合帳戶(帳單和發貨到此地點),結算帳戶(僅限帳單到此地點)和運輸帳戶(僅限運送到此地點)如何在c#中動態創建嚮導控件?

收集的信息被分解爲5分類:一般(商店名稱,地址,分機..)員工,(特定位置的)所有者,貿易參考和銀行業務

我目前有5個步驟的嚮導(每個類別一個),但例如,運輸地址需要General和Employee信息,可選地需要所有者信息,並且不應該有Trade Reference或Banking信息,而且用戶需要完全填寫t之前的一般信息類別他可以確定賬戶類型。

似乎沒有辦法禁用整個嚮導步驟(我的意思是指向它的鏈接沒有顯示在側邊欄上,並且無法導航到),所以我想動態創建嚮導,以便我只需要獲取所需的步驟。問題是嚮導目前在.aspx頁面上有700多行代碼,並且動態創建它可能會增加一倍(如果我幸運的話)。

是否有一些方法可以靜態創建每個步驟,然後動態決定在我的嚮導中使用哪些步驟或純動態我的唯一選擇?

或(這是最可能的情況)有沒有一個更簡單的解決方案,可以讓我得到我期待的結果?

+0

邁克爾,這是一個'罐頭'嚮導?或者你自己寫了嗎?如果罐裝,應該有方法根據數據將步驟標記爲可選。 –

+0

@MarcLyon它是一個標準的asp嚮導。我可以在ActiveStepChange事件中使用一堆嵌套if語句跳過步驟,但據我所知,無法有選擇地顯示側欄鏈接;這些都是他們或者都不是。 –

+0

正如下面的Dillie-O所述,嚮導是一種古老的技術,服務器控制並沒有太多的愛意。如果您可以跳過嚮導中的步驟,您可以在嵌套的if語句中設置ActiveStep嗎?我知道,這不是這樣的業務邏輯的最佳位置,但如果你被嚮導困住,你可能不得不做一些非常規的事情。所以如果用戶點擊邊欄項目,只需跳到適當的步驟。 –

回答

0

鑑於嚮導的高度可定製的需求,他們中的很多人已經走到了一邊,贊成手動創建所有代碼。假設你在這裏討論的嚮導是ASP.Net WebForm Wizard對象是安全的嗎?我相信服務器控制在一段時間內還沒有更新。

您可以考慮的一件事是構建所有UI元素客戶端,然後讓AJAX/WebAPI端點執行數據處理。通過採用此路線,您可以根據正在處理的帳戶類型類型(可以從URL或隱藏表單域或其他內容獲取)輕鬆顯示/隱藏/自定義各種標籤/步驟。你可以做一個谷歌搜索「jQuery wizard builder」或類似的東西來找到那裏的圖書館。

在這方面將演示文稿從數據處理中解耦出來會給您更多的靈活性。它仍然可能比700行代碼稍多一點,但是您將更好地控制最終用戶處理數據的方式,方式和時間。您可以設置嚮導在每個步驟後發佈到您的服務,或者在提交之前等到收集完所有數據。