我有用于输入序列号到数据库的应用程序。序列号具有一组定义它的属性并且用户必须/可以提供它们来生成。用户界面模式:相同对象,显示方式不同
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 ...
这里有没有好的设计模式?
谢谢!
我还没有完全读链接,这样我可能会错过了点,但我同意它移动到一个帮手是绝对的东西,无论我应该做的。事情是,如果可能的话,我仍然希望用更优雅的解决方案替换if/then语句链。 – anonymous 2008-12-18 21:57:40