Ich versuche, etwas zu schaffen, um globale Site-weite Einstellungen in unserer ASP.NET-Website zu halten - Dinge wie Site-Name, Google Analytics-Kontonummer, Facebook-URL usw. Die Website kann mehrere "Marken" oder Sub -Seiten, also die Sitguid-Spalte, möchten wir auch die Möglichkeit haben, sie in Gruppen zu setzen, daher die Gruppenspalte - z TEST und PRODUKTION (eingestellt über web.config appsetting).
Ich möchte nicht, dass irgendeiner der KEYs irgendwo hartcodiert wird, aber ich würde gerne in der Lage sein, sie so einfach wie möglich im Code zu referenzieren, z. SiteSetting.getSetting ("SiteName") (diese können in Vorlagen (Masterpages u.ä.) verwendet werden, die mehr Junior-Entwickler erstellen)
Ich möchte auch die bestehenden Einstellungen in unserer Admin-Konsole verwalten und neue Einstellungen erstellen können.
Die Datentypspalte ist für das Bearbeitungsformular, so dass das korrekte Eingabeelement verwendet werden kann, z. Kontrollkästchen für Bit-Typen, Textfeld für Varchar usw. ...
SiteSettings-Datenbanktabelle derzeit:
%Vor%
Ich bin gerade dabei, dass das im Moment funktioniert, aber ich bin nicht glücklich mit der Art und Weise, wie ich es gemacht habe, und hätte gerne Ratschläge, die Leute hier haben, die helfen könnten, die "richtige" Lösung zu finden! Ich bin mir sicher, dass die Leute das vor mir getan haben. (Ich würde teilen, was ich bisher habe, aber die Antworten nicht auf eine bestimmte Art verfälschen wollen) Alles was ich suche, ist eine Übersicht darüber, wie dies am besten gemacht werden könnte, ohne jemanden zu suchen, der es für mich schreibt; )
Ich habe sowohl hier als auch Google ziemlich viel gesucht und habe nicht wirklich das gefunden, wonach ich suche, insbesondere die Möglichkeit, neue Einstellungsdefinitionen hinzuzufügen und die vorhandenen Einstellungen zu bearbeiten.
>
Das System läuft auf ASP.NET mit Webforms, es ist alles in c # geschrieben und verwendet MSSQL 2008.
Wie immer wird jede Hilfe sehr geschätzt!
BEARBEITEN Um zu verdeutlichen, werde ich erklären, was ich bisher gebaut habe. Ich bin fest entschlossen, all das in SQL zu speichern, da wir nicht wollen, dass web.config oder andere xml-Dateien oder eine andere Datenbank herumschweben, da es uns mehr gibt, wenn wir die App für andere Kunden einführen.
>
Bisher habe ich eine SiteSettings-Klasse, diese hat eine Methode GetSetting, die ich mit GetSetting ("SettingAlias") aufrufen kann, um den Wert für "SettingAlias" im DB zu bekommen. Der Konstruktor dieser Klasse ruft alle Einstellungen für die aktuelle Site aus der Datenbank ab und speichert sie in einem Wörterbuch, liest GetSetting aus diesem Dictionary. All diesen Teil, mit dem ich bisher zufrieden bin.
Der Teil, mit dem ich zu kämpfen habe, erzeugt das Bearbeitungsformular. Die vorherige Version von dieser verwendet einen Webservice, um die Einstellungen zu erhalten / einzustellen und ich versuche, etwas ähnliches zu verwenden, um Arbeit zu sparen, aber sie waren alle im Code definiert, wie GoogleAnalyticsID, Sitename etc ... und jeder hatte eine Spalte In der Datenbank besteht die Änderung, die ich mache, darin, diese Einstellungen als ROWS zu speichern (seitdem ist es einfacher, mehr hinzuzufügen, keine Änderung des Schemas und der gesamten sitesettings-Klasse). Derzeit hat meine SiteSettings-Klasse eine SiteSettingsEditForm-Methode, die packt Alle Informationen aus der db, erstellt eine Reihe von Steuerelementen für die Formularelemente, legt diese auf einer temporären Seite ab und führt sie aus, dann übergibt sie den generierten HTML-Code über Ajax an unser Managementsystem. Das fühlt sich falsch an und ist ein wenig klobig, und es ist der Grund dafür, es hier zu veröffentlichen, ich habe Probleme herauszufinden, wie man diese Dinge über den Webservice speichert, aber noch wichtiger HTML erzeugt, indem man eine Seite mit einer Menge von Formular-Kontrollen fühlen sich einfach wie der falsche Weg, um es zu tun.
Also zusammenfassend möchte ich (glaube ich) eine Klasse schreiben, um Cache & amp; Lesen Sie eine Handvoll Zeilen aus einer Datenbanktabelle und geben Sie mir auch ein Bearbeitungsformular (oder geben Sie Daten an etwas anderes, um das Formular zu generieren) basierend auf dem Inhalt der gleichen Datenbanktabelle (zB wo meine Typspalte Bit ist) 'Ich möchte ein Kontrollkästchen, wo es' Text 'Ich möchte eine Texteingabe)