Управление динамическими настройками веб-сайта, сохраняемыми в базе данных

Я пытаюсь создать что-то, чтобы хранить глобальные настройки сайта на нашем веб-сайте ASP.NET — такие вещи, как имя сайта, номер учетной записи Google Analytics, URL-адрес facebook и т. д. Сайт может иметь несколько «брендов» или суб- сайты, связанные с ним, следовательно, столбец sitguid, мы также хотели бы иметь возможность поместить их в группы, следовательно, столбец группы - напримерТЕСТ и ПРОИЗВОДСТВО (устанавливается через настройку приложения web.config).

Я не хочу, чтобы какой-либо из KEY был где-либо жестко закодирован, но я хотел бы иметь возможность ссылаться на них как можно проще в коде, например. SiteSetting.getSetting("SiteName") (они могут использоваться в шаблонах (мастер-страницах и т. д.), которые будут создавать более младшие разработчики)

Я также хотел бы иметь возможность администрировать существующие настройки в нашей консоли администратора и иметь возможность для создания новых настроек.

Столбец типа данных предназначен для формы редактирования, чтобы можно было использовать правильный элемент ввода, например. флажок для битовых типов, текстовое поле для varchar и т. д.

Таблица базы данных SiteSettings в настоящее время:

  [sts_sitGuid] [uniqueidentifier] NOT NULL, -- tells us which site the setting is for
  [sts_group] [nvarchar](50) NOT NULL, -- used to group settings e.g. test/live
  [sts_name] [nvarchar](max) NULL, -- the display name of the setting, for edit forms
  [sts_alias] [nvarchar](50) NOT NULL, -- the name for the setting
  [sts_value] [nvarchar](max) NOT NULL, -- the settings value
  [sts_dataType] [nvarchar](50) NULL, -- indicates the control to render on edit form
  [sts_ord] [tinyint] NULL,  -- The order they will appear in on the admin form

В данный момент я нахожусь на полпути к тому, чтобы это работало, но я не доволен тем, как я это сделал, и хотел бы как и любые советы, которые здесь есть, которые могут помочь найти «правильное» решение! Я уверен, что люди делали это до меня. (Я бы поделился тем, что у меня есть до сих пор, но не хочу искажать ответы каким-либо конкретным образом) Все, что я ищу, - это обзор того, как это лучше всего сделать, а не искать кого-то, кто напишет это для меня; )

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

Система работает на ASP.NET с использованием веб-форм, все написано на c# и использует MSSQL 2008.

Как всегда, любая помощь очень ценится!

РЕДАКТИРОВАТЬ: Чтобы уточнить, я собираюсь объяснить, что я построил до сих пор. Я решительно настроен хранить все это в SQL, так как нам не нужна сеть.config или другие xml-файлы или другую базу данных, поскольку это даст нам больше работы при развертывании приложения для других клиентов.

Пока у меня есть класс SiteSettings, у него есть метод GetSetting, который я могу вызвать с помощью GetSetting("SettingAlias"), чтобы получить значение для "SettingAlias" в БД. Конструктор этого класса извлекает все настройки для текущего сайта из базы данных и сохраняет их в словаре, GetSetting считывает из этого словаря. Всей этой частью я доволен до сих пор.

Часть, с которой я борюсь, это создание формы редактирования. В предыдущей версии этого использовался веб-сервис для получения/установки настроек, и я пытаюсь продолжать использовать что-то подобное для сохранения работы, но все они были определены в коде, например GoogleAnalyticsID, имя сайта и т. д.... и у каждого был столбец в базе данных изменение, которое я делаю, заключается в том, чтобы вместо этого хранить эти настройки как ROWS (поскольку тогда проще добавить больше, нет необходимости изменять схему и весь класс настроек сайта). В настоящее время мой класс SiteSettings имеет метод SiteSettingsEditForm, который захватывает все информация из базы данных, создает набор элементов управления для элементов формы, помещает их на временную страницу и выполняет ее, а затем передает сгенерированный HTML в нашу систему управления через ajax. Это кажется неправильным и немного неуклюжим, и именно поэтому я публикую его здесь, у меня возникают проблемы с выяснением того, как сохранить этот материал обратно через веб-сервис, но, что более важно, сгенерировать кучу HTML, выполнив страницу, содержащую загрузку управление формой просто кажется неправильным способом сделать это.

Подводя итог, я (думаю, я) хочу написать класс, чтобы иметь возможность кэшировать и читать несколько строк из таблицы базы данных, а также дать мне форму редактирования (или передать данные чему-то еще, чтобы сгенерировать форму )который является динамическим на основе содержимого той же таблицы базы данных (например, если мой столбец типа «бит», я хочу установить флажок, где это «текст», я хочу текстовый ввод)

8
задан Treborbob 11 April 2012 в 08:52
поделиться