2010-09-29 5 views
2

RésuméComment changer Asp.net Theme via web.config à la volée

J'ai une application web avec plus de 5 thèmes. Chaque thème couvre un style complètement différent pour différents clients. Chaque fois que nous publions une nouvelle version de notre application, nous l'envoyons pour tous les clients.

Le problème.

Nous spécifions le thème dans le fichier web.config dans la balise <Page>. comme

<page theme="Theme1" /> // or Theme2 for second customer. 

avec cette approche, nous changer facilement le style d'application de l'autre sans écrire des codes qui a besoin d'une nouvelle pour chacun publier. Avec le changement theme="Theme1". rien ne change et nous n'avons pas écrit un code dans l'application, alors pourquoi changer theme ne change pas le thème et nous avons besoin d'une nouvelle publication?

nous voulons le changer en web.config ou ailleurs et en changeant le changement de thème sans avoir besoin d'une nouvelle publication pour chacun.


Mise à jour:

Je publie une fois, puis copier la version publiée pour chaque client (5 fois), puis dans chaque fichier web.config je changer le theme="CustomerTheme". mais seulement le thème qui a été actif dans la publication processus est utilisable dans toutes les versions 5 et 4 autres thèmes sont non utilisables

-

En fait, la question principale est que la raison pour laquelle les changements dans web.config besoin d'un autre publier pendant qu'il est XML et n'a pas besoin d'un complie. Je dois ajouter que cette note, App_Theme comprennent tous les 5 thèmes afin que tous les Compile et sont prêts à utiliser

-

Ceci est la façon dont je publie l'application

Publish

Photo Link


Update 2

ici IFound le problème exact signalé par quelqu'un d'autre. il résout le problème mais je ne peux pas comprendre comment il a résolu ce problème. Quelqu'un peut-il me dire comment il a résolu le problème?

il utilisé aspnet_compiler command et dit que automatically ADDS the 'theme' on the Page directive

(premier post est la question et le dernier message est la réponse)

http://bytes.com/topic/asp-net/answers/495850-themes-web-config

Répondre

3

Si je vous ai bien compris, vous avez un thème pour chaque client et cela ne changera pas?

Cependant, je ne comprends pas votre scénario de publication? Pourquoi voulez-vous changer le thème si chaque client a sa propre application Web? Néanmoins, que diriez-vous de vérifier l'URL de la demande dans le codebehind et de définir le nom du thème par programme? Pseudo-code: (vous devez exécuter ce code à chaque requête.) Vous pouvez écrire un HTTPHandler pour cela ou utiliser l'événement BeginRequest dans global.asax. informations d'URL nécessaires)

switch(Request.URL) 
{ 
case "www.customer1.com": 
    Theme = "Customer1"; 
    break; 
case "www.customer2.com": 
    Theme = "Customer2": 
    break; 
} 
+0

Vous m'avez sous-estimé à 100%. Je dois changer le thème dans 'Web.Config' pour chaque client et cela n'arrivera qu'une seule fois dans web.config, mais seul le thème que je publie avec lui fonctionnera et je ne peux pas changer le thème pour chaque client, alors j'ai publier une demande complète pour chacun d'entre eux. Et je ne veux pas utiliser de code s'il peut avoir une solution à la volée –

+0

Je ne vous comprends pas. Que voulez-vous dire par "alors je dois publier une demande complète pour chacun d'entre eux". Si vous apportez des modifications à votre base de code, et que chaque client possède sa propre application Web (en termes d'applications IIS), vous devez définitivement la publier pour tous les clients, afin de procéder aux modifications.Je pense que vous devez expliquer un peu plus ce thème – citronas

+0

Je publie une fois puis copie la version publiée pour chaque client (5 fois) puis dans chaque fichier 'web.config' je change le' theme = "CustomerTheme" '. mais seul le thème qui était actif dans le processus de publication est utilisable dans l'ensemble des 5 versions et 4 autres thèmes sont inutilisables –

2

Est-ce que vous publiez l'application comme précompilés? Si c'est le cas, cela pourrait être la cause. Pourquoi ne pas stocker le thème à utiliser dans une table de base de données et y accéder plutôt que le web.config? Cela devrait alors être vraiment "à la volée".

+0

Je exactement publier comme pré-compilé, alors pourquoi c'est la raison? Quelle est la solution alors? –

+0

Je mettrais à jour la question avec une photo (et un lien vers la photo) de la façonI Publier l'application, jetez un oeil s'il vous plaît –

+0

Je pense que vous ne pouvez pas apporter des modifications au site à la volée sans republication lorsque vous publiez comme précompilé . Je voudrais stocker des informations basées sur le thème dans une base de données quelque part comme une solution plus facile à mettre à jour et plus facile à soutenir – JamWheel

0

Même s'il s'agit d'un post vraiment vieux, je ne pense pas que la réponse acceptée est la meilleure. Sur ce lien, https://bytes.com/topic/asp-net/answers/495850-themes-web-config est une réponse correcte, mais pas aussi claire qu'elle le devrait. Il a mentionné que le compilateur ajoute le thème à chaque page, alors il ne peut pas être changé par le fichier web.config sur le serveur. Mais il n'a pas dit quoi faire pour éviter cela et c'est assez simple. Il vous suffit de supprimer le theme = 'Theme1' de web.config avant de compiler le site web. Si ce n'est pas le cas, alors le compilateur ne définirait pas le thème sur chaque page et vous pouvez changer le thème simplement par web.config sur chaque serveur que vous aimez avec le même code exact.

+0

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [De l'examen] (/ review/low-quality-posts/17378897) –