2009-04-20 7 views
31

J'ai un site ASP.Net 2.0 et je veux le traduire en paradigme MVC (je suis nouveau dans ce domaine), mais à partir de zéro. J'ai quelques thèmes dans mon ancien site, mais en lisant ici et là, il semble que les thèmes ne s'intègrent pas bien dans le paradigme MVC.Asp.Net Thèmes MVC, comment?

La question est:

Quelle est la meilleure pratique dans MVC pour la construction d'un site utilisateur personnalisable Themed? Pouvez-vous donner un petit exemple, s'il y a lieu?

Note: Je suis au courant de this mais ils ne parlent pas des meilleures pratiques ou comment commencer.

+0

De combien de personnalisation avez-vous besoin? S'il s'agit uniquement de couleurs et de polices, un simple remplacement CSS fera l'affaire. – User

+0

Principalement je veux que l'utilisateur puisse changer le thème, dans Asp.Net 2.0 j'obtiens facilement, et je veux savoir comment un type MVC-ish typiquement obtiendra cette approche –

Répondre

26

Voici mon code que je l'ai utilisé pour la mise en œuvre « Thèmes » dans ASP.NET MVC:

ASP.NET MVC: Implement Theme Folders using a Custom ViewEngine

Il est agréable quand vous êtes en mesure de simplement échanger des fichiers CSS pour changer le thème , mais ce n'est vraiment pas très pratique dans une tonne de cas. Surtout quand chaque thème doit avoir une disposition complètement différente. Dans ce cas, vous devez changer le CSS et le HTML qui sont rendus, et c'est pourquoi j'ai écrit le code trouvé sur le lien ci-dessus.

+4

Ne créons-nous pas de vues et de pages maîtres pour chaque thème? On dirait que nous violons le principal DRY? – Amitabh

+1

@Amitabh - C'est la raison pour laquelle Chris a dit: «[il suffit d'échanger CSS] n'est pas très pratique [...] vous devez changer le CSS et le HTML. –

+1

Est-ce toujours la meilleure façon de changer les mises en page et les thèmes dans MVC4? Votre article est 2009 mais semble persister sur le Web. Il n'y a vraiment aucun moyen .NET de le faire ... encore? – ppumkin

20

Un environnement propre, sémantiquement correct HTML avec une bonne CSS est le chemin à thème toute application web, que ce soit ASP.NET, RoR, PHP, etc.

Le meilleur exemple de la puissance de CSS est CSS Zen Garden.

w3schools a une belle introduction/tutorial to CSS.

Chacun de vos utilisateurs pourraient avoir une feuille de style associée qui se choisie lorsqu'il ya lieu, i.e. .:

<link rel="stylesheet" type="text/css" href="<%= Model.SelectedStyleSheet %>"/> 
+3

Bien que ceci soit vrai, et ce soit deux bonnes ressources - il ne répond PAS à la question. Il semble que Jhonny recherche des astuces et des techniques pour implémenter un système de thème dans un projet ASP.NET MVC. – Jason

+5

@Jason: vous avez raison, je viens d'ajouter un moyen possible de mettre en œuvre cela. –

1

jQuery-ui thèmes sont gentils, et pas trop difficile à mettre en œuvre. Il suffit de créer un lien vers le fichier js et css et n'oubliez pas les icônes.

Et assurez-vous d'utiliser Url.Content() dans ces liens. Sinon, il peut ne pas être lié au bon chemin, une fois que vous l'avez déployé sur un serveur de production (je suis tombé dans ce piège une fois).

+0

Ce n'est pas une réponse à la question. – phd

+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 fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [À revoir] (/ review/low-quality-posts/16681117) –

2

Comme les thèmes étaient destinés à créer des tags, vous pouvez utiliser CSS pour créer une approche similaire. Je vous recommanderais probablement de commencer par copier vos thèmes par défaut sur les définitions CSS, par exemple.

html: <input type="button" />

css: entrée {color: bleu clair}

Alors, pour tout ce qui avait votre thème par défaut, vous pouvez simplement appliquer les classes pour eux. Il faut un certain temps pour réécrire tous vos thèmes en CSS, mais une fois cela fait l'effort.