【问题标题】:ASP.NET User Controls or Master Page or other for Data Entry FormASP.NET 用户控件或母版页或其他数据输入表单
【发布时间】:2012-02-07 14:48:24
【问题描述】:

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

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

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

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

所以我的问题是这样的。

在某些人看来,在不重复四次页面布局并仍然保持不同业务逻辑分开的情况下完成此任务的最佳方法是什么?

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

但是,如果我忽略了最佳实践或更优雅的方式;我真的可以使用这个建议。

非常感谢您的宝贵时间!

【问题讨论】:

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


    【解决方案1】:
    layout 跨页面通用时,

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

    根据您的描述,我将使用 MasterPage 进行订单页面布局。然后创建 4 个订单页面(使用此 MasterPage)并从基页面类继承。您可以在 Master 上放置一个提交订单按钮,然后在每个订单页面上处理它。如果每个订单页面上有任何公共组件(布局除外),例如订单项目列表,您可以使用用户控件来处理这些。

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

    【讨论】:

    • 谢谢!我对每个订单都有完全相同的布局。通用功能(例如每个页面顶部的控件分组)听起来就像是一个用户控件。那就是我要去的地方——只需要第二个意见,以确保我不会太靠近代码而看不到树!谢谢!
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复!我很幸运有一个共同的布局,所以听起来 MasterPage 将是要走的路。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    相关资源
    最近更新 更多