ASP.NET用户控件或母版页或其他数据输入表单

时间:2012-02-07 14:48:24

标签: asp.net user-interface user-controls master-pages

我正在为订单处理构建数据输入表单,并可以使用一些最佳实践建议。如果有更优雅的方式来完成我在ASP.NET中所概述的内容并且我没有看到它,我只是想寻求意见。

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

我有一个订单输入页面要写。在我的情况下,订单包括: *标题区域,包含商家和客户送货信息 *当用户从菜单中添加行项目时,在其上显示行项目的详细信息区域

我有四种订单类型将使用相同的布局,但它们背后的业务逻辑将是不同的。

所以我的问题是这个。

最好的方法是什么,在某人看来,如果不重复四次页面布局并且仍然保持不同的业务逻辑分离,那么最好的方法是什么?

我考虑过将控制区域变成用户控件,然后为我需要的每种订单创建订单页面,并为每个页面编写业务逻辑。这就是我在设计方面的目标。

然而,如果我有一种最佳实践或更优雅的方式,我会忽略;我真的可以使用这些建议。

非常感谢您的时间!

2 个答案:

答案 0 :(得分:1)

布局在页面中很常见时,

MasterPages很好用。用户控件对于较小的可重用组件非常有用。

根据您的描述,我将使用MasterPage作为订单页面布局。然后创建4个订单页面(使用此MasterPage)并从基页类继承。您可以在主服务器上放置提交订单按钮,然后在每个订单页面上处理它。如果每个订单页面上有任何常见组件(布局除外),例如订单商品列表,您可以使用用户控件。

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() {
        ...
     }
}

...

答案 1 :(得分:0)

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