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

时间:2011-04-16 17:14:08

标签: c# asp.net design-patterns architecture

我认为问题不清楚。

我的系统中只有19种类型的物品。我有19个页面,每个允许我添加一个特定类型的新项目。

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

因此我认为我会使用QueryString来定义我们将如何使用该页面,如果是新的则所有内容将保持不变,如果它用于“编辑”,那么我将更改Text属性对于几个标签,并显示一些额外的TextBoxes和DropDownLists。

我可以通过多种方式做到这一点,但这将是一团糟。我希望有人可以提出一种方法来保持我的良好设计和架构。

感谢您的时间=)

3 个答案:

答案 0 :(得分:2)

让一个页面根据参数进行添加/编辑的替代方法是拥有两个不同的页面,这两个页面共享一个提供公共UI的UserControl。例如,如果您有CustomerAdd.aspx和CustomerEdit.aspx thjey可以共享CustomerProperties.ascx控件,该控件具有Name,Address等文本框。

答案 1 :(得分:1)

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

然后你可以做page.aspx?do = add或page.aspx?do = edit然后使用:

        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

答案 2 :(得分:0)

1-为页面或类型声明InstanceState属性。如果它适用于页面,则使其读取并将其值写入ViewState变量。

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

3-声明一些其他布尔属性,以帮助您轻松地自定义布局(InstanceIsNew,InstanceIsOnRead,InstanceIsOnEdit ..)。这些属性依赖于InstanceState属性来返回它们的值。

4-将您的布局项目绑定到这些属性,以根据其值显示,启用以及您需要对布局项目执行的其他操作。

5-在适当的事件上更改InstanceState的值以更改布局。


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