UI 模式:相同对象,显示不同

问题描述 投票:0回答: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 中添加 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
2个回答

1
投票

我相信您正在寻找的模式是模型视图控制器,或 MVC。

http://www.dotnetheaven.com/Uploadfile/rmcochran/MVC_intro02012006001723AM/MVC_intro.aspx

© www.soinside.com 2019 - 2024. All rights reserved.