我有三个ascx Web 表单用户控件来收集类似于以下内容的客户信用卡信息。第一个表单 web 用户控件有两个基本的文本框控件,第二个有四个,最后一个有一个。为简洁起见,不显示其他控件。
UI 设计师可以通过组合基本控件来创建多种表单。例如,他可以将名字和姓氏控件移至收集信用卡信息的第三种形式。
在每个表单上,我必须在页面加载期间以及单击提交按钮时将一些信息保存到数据库中。由于表单众多,有时代码必须在表单后面的代码中重复。
如何通过重用后面代码中的代码将信息保存到数据库以及代码可以用SOLID原则维护来解决这个问题?
第一种形式:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FirstForm.ascx.cs" Inherits="WebApplication1.FirstForm" %>
<asp:TextBox ID="tbFirstName" runat="server"></asp:TextBox>
<asp:TextBox ID="tbLastName" runat="server"></asp:TextBox>
... more basic controls
<asp:Button ID="btnSubmit" runat="server" Text="Button" />
第二种形式:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SecondForm.ascx.cs" Inherits="WebApplication1.SecondForm" %>
<asp:TextBox ID="tbStreetAddress" runat="server"></asp:TextBox>
<asp:TextBox ID="tbCity" runat="server"></asp:TextBox>
<asp:TextBox ID="tbState" runat="server"></asp:TextBox>
<asp:TextBox ID="tbZip" runat="server"></asp:TextBox>
... more basic controls
<asp:Button ID="btnSubmit" runat="server" Text="Button" />
第三种形式:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Thirdform.ascx.cs" Inherits="WebApplication1.Thirdform" %>
<asp:TextBox ID="tbCreditCart" runat="server"></asp:TextBox>
... more basic controls
<asp:Button ID="btnSubmit" runat="server" Text="Button" />
第一种形式的代码后面:
public partial class FirstForm : System.Web.UI.UserControl
{
Dim _dbService As DBService
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
_dbService.Save(tbFirstName.Text);
_dbService.Save(tbLastName.Text);
}
}
}