2012-11-22 41 views
4

我有一個45步向導用戶界面(複雜的域名 - 保險)。它在ASP.NET MVC 3中實現。問題是我的操作方法有很多代碼來確定下一步是什麼,具體取決於用戶,已經收集的數據,天氣預報......更糟糕的是,類似的代碼重複後退按鈕功能。有沒有我可以用來抽象這種邏輯的模式?我希望能夠定義前進步驟並自動獲得後退步驟。如何構建複雜嚮導中下一個/上一個步驟的代碼?

+1

45個步驟...哇 – SimonGates

+0

我建議你使用像knockoutjs這樣的MVVM框架,你可以通過行爲和外觀結合聲明式和命令式方法來綁定模型。 – Kath

+0

不能同意@Kate更多。您可以花費無數小時,數天,數週的時間來確定邏輯,以便在您的代碼中處理此問題,或者將它們放在一個很好的捆綁客戶端中。我發現更新一個腳本文件比在大量功能和控制器之間彈跳要容易得多。只是我的兩美分:) – TNCodeMonkey

回答

0

我的建議是建立一個接口的類,如:

public interface IStepDecisionMaker 
{ 
    StepInfo DefineNextPreviousStep(object data); 
} 

public class StepInfo { 
    public int NextStepId {get;set;} 
    public int PreviousStepId {get;set;} 
    public object Values {get;set;} 
} 

你現在可以在數據庫中添加表或XML,其中設置所有可用的步驟,以及每個步驟中爲它們分配一個具體的類實現接口IStepDecisionMaker

在您的操作中,您可以收集步驟的數據並使用IoC系統或反射CreateInstance創建具體類的實例,調用DefineNextPreviousStep傳遞需要檢查的數據以及方法可以返回一個類,它會告訴你什麼是下一個或前一個步驟

這樣就可以達到幾件事情

  1. 你的行動將有代碼只是幾行
  2. 的邏輯是不是噸,如果再,但每一類裏面
  3. 你可以改變直接一些條件下在具體類的特定步驟,而不觸摸的代碼的另一部分

IMHO

相關問題