#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 для соответствующих событий, чтобы изменить свой макет.
ПРИМЕЧАНИЕ: это может показаться вам немного сложным при работе над первой страницей. Но как только вы поймете логику этого, вы сможете легко и быстро применить это к другим.