【发布时间】:2008-12-18 21:44:59
【问题描述】:
我有一个将序列号输入数据库的应用程序。序列号有一组定义它的属性,用户必须/可以提供它们来生成。
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 中的 if/then 条件运行——如果你给了我一个制造订单,以这种方式显示它,如果你给我别的东西,就以这种方式,等等。问题是否已经请求了几个新选项,并且不断链接 if/then 语句变得非常丑陋。
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 ...
这里有好的设计模式吗?
谢谢!
【问题讨论】:
标签: c# asp.net-mvc user-interface design-patterns