【问题标题】:Use one page for adding and editing an item in ASP.NET在 ASP.NET 中使用一页添加和编辑项目
【发布时间】:2011-04-17 01:49:36
【问题描述】:

我认为这里的问题并不明确。

我的系统中有 19 种类型的项目。我有 19 页,每页允许我添加特定类型的新项目。

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

所以我想我会使用QueryString 来定义我们将如何使用页面,如果是新的,那么一切都将保持不变,如果它用于“编辑”,那么我将更改 Text 属性几个标签并显示一些额外的 TextBoxes 和 DropDownLists。

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

感谢您的宝贵时间 =)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 好的简单的解决方案..谢谢+1
    【解决方案2】:

    您的页面上可以有两个面板,一个用于添加控件,一个用于编辑控件,两者都设置为 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
    

    【讨论】:

      【解决方案3】:

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

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

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

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

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


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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 2013-11-30
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多