2012-02-07 26 views
1

我正在构建订单处理的数据输入表单,并可能使用一些最佳实践建议。如果有一种更优雅的方式来完成我在ASP.NET中概述的内容,但我没有看到它,我只是想提出意见。ASP.NET用户控件或主页面或其他数据输入表格

我有一个旧的应用程序,我正在建模一个新的后。所以这是一个全新的设计。

我有一个订单输入页面来编写。在我的情况,订单包括: *标题区,与商家和客户发货信息 *当用户在其上显示与行项目细节方面增加了他们从菜单

我有四个订单类型将使用相同的布局,但背后的商业逻辑将会不同。

所以我的问题是这样的。

有人认为在不重复页面布局四次的情况下完成此操作并保持不同业务逻辑分离的最佳方式是什么?

我已经考虑将控制区域变成用户控件,然后为每个需要的订单类型创建订单页面,并为每个页面编写业务逻辑。这就是我在设计中所处的位置。

但是,如果有最佳做法或更优雅的方式,我可以忽略;我真的可以使用这些建议。

非常感谢您的时间!

回答

1

当页面上共有布局时,MasterPages很不错。用户控件对于较小的可重用组件很有用。

从你所描述的,我会使用一个MasterPage的订单页面布局。然后创建4个订单页面(使用此主页面)并从基本页面类继承。您可以在主人上放置一个提交订单按钮,然后在每个订单页面上处理。如果每个订单页面上有任何常见组件(布局除外),例如订单项目列表,则可以使用这些用户控件。

public abstract class OrderPage : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.Master.SubmitButton.Click += new EventHandler(SubmitButton_Click); 
    } 

    protected override void SubmitButton_Click(object sender, EventArgs e) { 
     CalculateTotal(); 
     SubmitOrder(); 
    } 

    protected abstract void CalculateTotal(); 
    protected abstract void SubmitOrder(); 
} 

public partial class OrderType1Page : OrderPage 
{ 
    protected override void CalculateTotal() { 
     ... 
    } 

    protected override void SubmitOrder() { 
     ... 
    } 
} 

public partial class OrderType2Page : OrderPage 
{ 
    protected override void CalculateTotal() { 
     ... 
    } 

    protected override void SubmitOrder() { 
     ... 
    } 
} 

... 
+0

谢谢!每个订单都有完全相同的布局。常见的功能(就像在每个页面顶部的控件分组一样)听起来像是当时的用户控件。那是我前往的地方 - 只需要第二个意见,以确保我不是太接近代码才能看到树!谢谢! – 2012-02-07 16:14:13

+0

没问题。你介意标记你的问题吗? – Brady 2012-02-07 17:57:27

0

用户控件将提供更多的灵活性,以便在不全部共享相同布局的页面上使用。有时很难以这样的方式来布置母版页,使得它上面的容器允许完全自定义。作为用户控件,您可以将其包含在页面或母版页中,并共享相同的通用代码。

+0

感谢您的回复!我很幸运有一个共同的布局,所以它听起来像MasterPage是要走的路。再次感谢! – 2012-02-07 16:17:51

相关问题