2008-12-18 247 views
2

我有用於輸入序列號到數據庫的應用程序。序列號具有一組定義它的屬性並且用戶必須/可以提供它們來生成。用戶界面模式:相同對象,顯示方式不同

public class Serial 
{ 
    public string Number {get; set;} 
    public string Part {get; set;} 
    public string MfgOrder {get; set;} 
    public string CusOrder {get; set;} 
    public string Note {get; set;} 
    ... etc ... 
} 

現在本申請的開始點請求的多條信息(例如,零件編號或製造順序等)其中之一的用戶。該起點可能已經填入了一些所需的用戶輸入。然後,我想採取這些已知的項目,並根據他們改變形式。

例如。如果其中兩條信息是部件號和製造訂單號,並且用戶提供製造訂單號(與數據庫中的部件號有關係),我想顯示這些值但不允許它們是編輯。如果用戶只是給我一個零件號碼,我想允許生產製造訂單作爲一個文本框(可能)是可選的或者旁邊需要。

public class MfgOrder 
{ 
    public string MfgOrder {get; set;} 
    public string Part {get; set;} 
} 

... 

MfgOrder order = new MfgOrder(some_user_value); // queries database, returns populated object 
Serial serial = new Serial() { 
    MfgOrder = order.MfgOrder, 
    Part = order.Part 
}; 

此應用程序的工作,現在通過只是有如果/然後在UI條件 - 如果你給我一個廠家批號訂單,dispaly這樣說,如果你還有給我的東西,做這種方式,等問題是幾個新的選擇已被要求,並持續鏈接如果/然後陳述變得非常醜陋。

if(serial.comes_from_mfgOrder == true) 
{ 
    %>Manufacturing Order: <%=serial.MfgOrder %><% 
} else if (serial.comes_from_part_number == true) { 
    %>Manufacturing Order: <%=Html.Textbox("MfgOrder")%><% 
} else if // continue this for way too long now ... 

這裏有沒有好的設計模式?

謝謝!

回答

1
+0

我還沒有完全讀鏈接,這樣我可能會錯過了點,但我同意它移動到一個幫手是絕對的東西,無論我應該做的。事情是,如果可能的話,我仍然希望用更優雅的解決方案替換if/then語句鏈。 – anonymous 2008-12-18 21:57:40

相關問題