Используйте одну страницу для добавления и редактирования элемента в ASP.NET

#c# #asp.net #design-patterns #architecture

#c# #asp.net #шаблоны проектирования #архитектура

Вопрос:

Я не думаю, что вопрос здесь ясен.

Просто у меня в системе 19 типов элементов. и у меня есть 19 страниц, каждая из которых позволяет мне добавлять новый элемент определенного типа.

Страница «Добавить новый элемент» и страница «Редактировать существующий элемент» очень похожи друг на друга.. все, что мне нужно, это скрыть / показать пару элементов управления.

итак, я подумал, что использую QueryString для определения того, как мы будем использовать страницу, если она новая, то все останется прежним, а если она используется для «редактирования», то я изменю свойства текста для пары меток и покажу несколько дополнительных текстовых полей и выпадающих списков.

Я мог бы сделать это несколькими способами, но это будет беспорядок. Я надеялся, что кто-нибудь сможет предложить способ сделать это, сохранив мой хороший дизайн и архитектуру.

Спасибо за ваше время =)

Ответ №1:

Альтернативой наличию одной страницы, которая одновременно добавляет / редактирует в зависимости от параметров, является наличие двух разных страниц, которые совместно используют UserControl, обеспечивающий общий пользовательский интерфейс. Например, если у вас есть CustomerAdd.aspx и CustomerEdit.aspx, они могут совместно использовать элемент управления CustomerProperties.ascx, Который содержит текстовые поля для имени, адреса и т.д.

Комментарии:

1. Хорошее и простое решение.. Спасибо 1

Ответ №2:

У вас могло бы быть две панели на вашей странице, одна для добавления элементов управления и одна для редактирования элементов управления с обоими значениями 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
  

Ответ №3:

1- Объявить свойство InstanceState для страницы или типа. Заставьте его читать и запишите его значение в переменную ViewState, если она предназначена для страницы.

2- Используйте перечисление, чтобы объявить возможные значения этого свойства. Вы можете объявить множество значений для этого свойства, например (New, onEdit, OnRead ).

3- Объявите некоторые другие логические свойства, которые помогут вам легко настроить ваш макет, например (InstanceIsNew, InstanceIsOnRead, InstanceIsOnEdit ..). Эти свойства зависят от свойства InstanceState, возвращающего их значения.

4- Привяжите элементы вашего макета к этим свойствам, чтобы отображать, включать и что еще вам нужно сделать с элементами вашего макета в соответствии с их значениями.

5- Измените значение InstanceState для соответствующих событий, чтобы изменить свой макет.


ПРИМЕЧАНИЕ: это может показаться вам немного сложным при работе над первой страницей. Но как только вы поймете логику этого, вы сможете легко и быстро применить это к другим.