C# 使用一个页面在ASP.NET中添加和编辑项目

C# 使用一个页面在ASP.NET中添加和编辑项目,c#,asp.net,design-patterns,architecture,C#,Asp.net,Design Patterns,Architecture,我认为这个问题在这里并不清楚 简单地说,我的系统中有19种类型的项目。我有19页,每一页允许我添加一个特定类型的新项目 “添加新项目”页面和“编辑现有项目”页面彼此非常相似。。我所需要的只是隐藏/显示几个控件 所以我想我应该使用QueryString来定义我们将如何使用页面,如果是新的,那么一切都将保持不变,如果它用于“编辑”,那么我将更改一些标签的文本属性,并显示一些额外的文本框和下拉列表 我可以用几种方法来做这件事,但这将是一场混乱。我希望有人能提出一种方法,让我的设计和架构保持良好 感谢您

我认为这个问题在这里并不清楚

简单地说,我的系统中有19种类型的项目。我有19页,每一页允许我添加一个特定类型的新项目

“添加新项目”页面和“编辑现有项目”页面彼此非常相似。。我所需要的只是隐藏/显示几个控件

所以我想我应该使用
QueryString
来定义我们将如何使用页面,如果是新的,那么一切都将保持不变,如果它用于“编辑”,那么我将更改一些标签的文本属性,并显示一些额外的文本框和下拉列表

我可以用几种方法来做这件事,但这将是一场混乱。我希望有人能提出一种方法,让我的设计和架构保持良好


感谢您的时间=)

您的页面上可以有两个面板,一个用于添加控件,另一个用于编辑控件,两个面板都设置为visible=false

然后,您可以执行page.aspx?do=添加或page.aspx?do=编辑,然后使用:

        If Request.QueryString("do") = "add" Then
            pnlAdd.Visible = true
        ElseIf Request.QueryString("do") = "edit" Then
            pnlEdit.Visible = true
        Else
           'Do some error handling.
        End If

页面上可以有两个面板,一个用于添加控件,另一个用于编辑控件,两个面板都设置为visible=false

然后,您可以执行page.aspx?do=添加或page.aspx?do=编辑,然后使用:

        If Request.QueryString("do") = "add" Then
            pnlAdd.Visible = true
        ElseIf Request.QueryString("do") = "edit" Then
            pnlEdit.Visible = true
        Else
           'Do some error handling.
        End If

1-声明页或类型的InstanceState属性。如果是针对页面的,则使其读取并将其值写入ViewState变量

2-使用枚举来声明此属性的可能值。可以为此属性声明许多值,如(New、OnEdit、OnRead)

3-声明一些其他布尔属性,以帮助您轻松自定义布局,例如(InstanceInNew、InstanceInRead、InstanceInEdit..)。这些属性依赖于InstanceState属性来返回其值

4-将布局项绑定到这些属性,以根据布局项的值显示、启用和执行其他操作

5-更改相应事件上InstanceState的值以更改布局



注意:当你在第一页上工作时,你可能会发现它有点复杂。但是一旦您理解了它的逻辑,您就可以轻松快速地将其应用于其他对象。

1-为页面或类型声明InstanceState属性。如果是针对页面的,则使其读取并将其值写入ViewState变量

2-使用枚举来声明此属性的可能值。可以为此属性声明许多值,如(New、OnEdit、OnRead)

3-声明一些其他布尔属性,以帮助您轻松自定义布局,例如(InstanceInNew、InstanceInRead、InstanceInEdit..)。这些属性依赖于InstanceState属性来返回其值

4-将布局项绑定到这些属性,以根据布局项的值显示、启用和执行其他操作

5-更改相应事件上InstanceState的值以更改布局



注意:当你在第一页上工作时,你可能会发现它有点复杂。但是,一旦你理解了它的逻辑,你就可以轻松快速地将它应用到其他页面上。

另一种选择是,让一个页面根据参数同时进行添加/编辑,就是让两个不同的页面共享一个提供公共UI的UserControl。例如,如果您有CustomerAdd.aspx和CustomerEdit.aspx,则thjey可以共享一个CustomerProperties.ascx控件,该控件具有名称、地址等文本框。

另一种方法是让一个页面根据参数同时进行添加/编辑,即让两个不同的页面共享一个提供公共UI的UserControl。例如,如果您有CustomerAdd.aspx和CustomerEdit.aspx,则thjey可以共享一个CustomerProperties.ascx控件,该控件具有名称、地址等文本框。

好的简单解决方案。。感谢+1好的简单解决方案。。谢谢+1