ASP.NET Web サイトでサイト全体のグローバル設定を保持するものを作成しようとしています - サイト名、Google アナリティクスのアカウント番号、Facebook の URL など... サイトには複数の「ブランド」またはサブサイトを関連付けることができますそれを使用して、sitguid 列、それらをグループに入れるオプションも必要です。したがって、グループ列 – たとえば、TEST と PRODUCTION (web.config appsetting で設定)。
KEY をどこにもハードコーディングしたくありませんが、SiteSetting.getSetting(“SiteName”) などのコードでできるだけ簡単に参照できるようにしたいと考えています (これらはテンプレート (マスターページなど) で使用できます)。 )より多くのジュニア開発者が作成します)
また、管理コンソールで既存の設定を管理し、新しい設定を作成できるようにしたいと考えています。
datatype 列は編集フォーム用で、正しい入力要素を使用できます。たとえば、ビット タイプのチェックボックス、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の両方でかなりの検索を行いましたが、探しているもの、特に新しい設定の「定義」を追加したり、存在する設定を編集したりする機能を実際には見つけられませんでした.
システムは Web フォームを使用して ASP.NET で実行され、すべて c# で記述され、MSSQL 2008 を使用します。
いつものように、どんな助けも大歓迎です!
編集:明確にするために、これまでに構築したものを説明します。web.config やその他の xml ファイル、または別のデータベースを浮かび上がらせたくないので、これらすべてを SQL に格納することに固執しています。アプリケーションを他の顧客にロールアウトするときに、より多くのことを行うことができるからです。
これまでのところ、SiteSettings クラスがあり、これには GetSetting("SettingAlias") で呼び出して DB の "SettingAlias" の値を取得できるメソッド GetSetting があります。このクラスのコンストラクターは、現在のサイトのすべての設定をデータベースから取得し、それらをディクショナリに格納します。GetSetting はそのディクショナリから読み取ります。これまでのところ、その部分のすべてに満足しています。
私が苦労している部分は、編集フォームの生成です。これの以前のバージョンでは、設定を取得/設定するために Web サービスを使用していました。作業を保存するために同様のものを引き続き使用しようとしていますが、GoogleAnalyticsID、Sitename などのコードですべて定義されており、それぞれに列がありましたデータベースで、私が行っている変更は、代わりにこれらの設定を ROWS として保存することです (スキーマとすべての sitesettings クラスを変更する必要がないため、より簡単に追加できるため) 現在、私の SiteSettings クラスには、すべてを取得する SiteSettingsEditForm メソッドがあります。データベースからの情報、フォーム要素用の一連のコントロールを作成し、それを一時ページに配置して実行し、生成された HTML を ajax 経由で管理システムに渡します。これは間違っていると感じ、少しぎこちなく、ここに投稿する理由です。
要約すると、データベーステーブルから一握りの行をキャッシュして読み取ることができるクラスを作成し、編集フォームを提供する(またはフォームを生成するために他の何かにデータを提供する)クラスを作成したいと思います。同じデータベーステーブルの内容に基づく動的 (たとえば、タイプ列が「ビット」の場合はチェックボックスが必要で、「テキスト」の場合はテキスト入力が必要です)