我正在尝试创建一些东西来在我们的 ASP.NET 网站中保存全球站点范围的设置 - 例如站点名称、谷歌分析帐号、facebook url 等......该站点可以有多个“品牌”或关联的子站点有了它,因此有了sitguid 列,我们还希望可以选择将它们分组,因此也可以选择组列——例如TEST 和PRODUCTION(通过web.config appsetting 设置)。
我不希望在任何地方对任何 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
我目前正在完成这项工作,但我对我的工作方式不满意,并希望这里的任何人有任何可能有助于找到“正确”解决方案的建议!我敢肯定,在我之前人们已经这样做了。(我会分享我到目前为止所拥有的,但不想以任何特定方式扭曲答案)我正在寻找的只是一个关于如何最好地完成它的概述,而不是寻找任何人为我写它; )
我在这里和谷歌都做了很多搜索,并没有真正找到我想要的东西,尤其是添加新设置“定义”以及编辑现有设置的能力。
该系统使用 webforms 在 ASP.NET 上运行,全部用 c# 编写并使用 MSSQL 2008。
与往常一样,非常感谢任何帮助!
编辑:为了澄清,我将解释我到目前为止所构建的内容。我决定将所有这些存储在 SQL 中,因为我们不希望 web.config 或其他 xml 文件或其他数据库浮动,因为当我们向其他客户推出应用程序时,它会给我们更多工作。
到目前为止,我有一个 SiteSettings 类,它有一个 GetSetting 方法,我可以使用 GetSetting("SettingAlias") 调用它来获取数据库中“SettingAlias”的值。此类的构造函数从数据库中获取当前站点的所有设置并将其存储在字典中,GetSetting 从该字典中读取。到目前为止,我对所有这部分都很满意。
我正在努力的部分是生成编辑表单。以前的版本使用网络服务来获取/设置设置,我正在尝试继续使用类似的东西来保存工作,但它们都在代码中定义,例如 GoogleAnalyticsID、Sitename 等......并且每个都有一个列在数据库中,我所做的更改是将这些设置存储为 ROWS(从那时起添加更多更容易,无需更改架构和所有 sitesettings 类)目前我的 SiteSettings 类有一个 SiteSettingsEditForm 方法,它可以获取所有来自 db 的信息,为表单元素创建一堆控件,将其放入临时页面并执行,然后通过 ajax 将生成的 HTML 传递给我们的管理系统。这感觉不对,有点笨拙,是在这里发布的原因,
所以总而言之,我(我想我)想写一个类来缓存和读取数据库表中的几行,并给我一个编辑表单(或将数据提供给其他东西以生成表单),即动态基于同一个数据库表的内容(例如,我的类型列是“位”我想要一个复选框,它是“文本”我想要一个文本输入)