我正在为订单处理构建数据输入表单,并可以使用一些最佳实践建议。如果有更优雅的方式来完成我在ASP.NET中所概述的内容并且我没有看到它,我只是想寻求意见。
我有一个旧的应用程序,我正在建模一个新的应用程序。所以这是一个全新的设计。
我有一个订单输入页面要写。在我的情况下,订单包括: *标题区域,包含商家和客户送货信息 *当用户从菜单中添加行项目时,在其上显示行项目的详细信息区域
我有四种订单类型将使用相同的布局,但它们背后的业务逻辑将是不同的。
所以我的问题是这个。
最好的方法是什么,在某人看来,如果不重复四次页面布局并且仍然保持不同的业务逻辑分离,那么最好的方法是什么?
我考虑过将控制区域变成用户控件,然后为我需要的每种订单创建订单页面,并为每个页面编写业务逻辑。这就是我在设计方面的目标。
然而,如果我有一种最佳实践或更优雅的方式,我会忽略;我真的可以使用这些建议。
非常感谢您的时间!
答案 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中,并共享相同的公共代码。