我有一个用于将序列号输入数据库的应用程序。序列号具有一组定义它的属性,用户必须/可以提供它们来生成。
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 ...
这里有好的设计模式吗?
谢谢!
我相信您正在寻找的模式是模型视图控制器,或 MVC。
http://www.dotnetheaven.com/Uploadfile/rmcochran/MVC_intro02012006001723AM/MVC_intro.aspx