2008-12-18 115 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

相关问题