2010-08-24 10 views
0

Le projet sur lequel je travaille permet à un utilisateur final de modifier le code CSS pour intégrer l'application au mieux. La plupart des valeurs CSS sont stockées dans une base de données et doivent être récupérées et analysées dynamiquement.Feuilles de style dynamique ASP.NET MVC

J'ai configuré un contrôleur de style et donné une action à chaque feuille de style, puis j'ai transmis les données de configuration à la vue. J'ai défini le ContentType sur "text/css" et ensuite généré les feuilles de style.

Cela fonctionne très bien, mais le problème que je rencontre est le suivant: aucun code ne fonctionne dans l'application. Je l'inclut dans le code de la tête, mais il n'analyse pas dans le code.

Un exemple de ce que je fais est la suivante:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" ContentType="text/css" %> 

.element { 
    background-color: <%= ViewData.Model.BackgroundColor %>; 
} 

-je inclure comme ceci:

<link href="/style/Basic" rel="stylesheet" type="text/css" media="all" />

Quand j'inclure le code CSS dans une vue partielle et inclure à l'aide du ViewModel (enveloppé dans des étiquettes de style) dans une action, alors tout fonctionne bien. C'est quand j'essaye d'analyser ceci comme un dossier séparé quand cela ne fonctionne pas.

Y a-t-il quelque chose que je fais de façon incorrecte? Ou y a-t-il une sorte de pépin?

Merci à l'avance: D

+0

Quelle sortie obtenez-vous lorsque vous pointez votre navigateur à '/ style/Basic'? Vous pouvez également vérifier les en-têtes HTTP retournés pour vous assurer qu'ils ont l'air bien. –

+0

J'ai essayé avec un code similaire au vôtre, et cela fonctionne quand j'utilise ces deux extraits. Je voudrais d'abord vérifier firebug ou fiddler pour voir si la demande passe à travers. Soit ça ou je ne comprends pas votre question. – MarkKGreenway

Répondre

1

Utilisez un outil tel que HTTPWatch pour vérifier que la feuille de style est envoyé vers le bas et non 404'd

+0

Lorsque j'accède à la feuille de style, cela semble correct. C'est ce qui me déroute. – Swamp56

+0

Je retire ce commentaire. Il s'avère que j'ai oublié de passer un identifiant dans l'URL, ce qui est requis pour chaque contrôleur = \. Je me sens comme un idiot maintenant xD. – Swamp56

1

Contrôleur

public ActionResult Basic() 
    { 
     Response.ContentType = "text/css"; 
     var basicVM = new BasicVM() 
          { 
           BackgroundColor = "Lime", 

          }; 
     return View(basicVM); 

    } 

Et la vue

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplication3.Controllers.BasicVM>"  ContentType="text/css" %> 
    body { 
     background-color: <%= ViewData.Model.BackgroundColor %>; 
     } 

et la page de test

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Test</title> 
    <link href="/Home/Basic" rel="stylesheet" type="text/css" media="all" /> 
</head> 
<body> 
    <div> 
     Test 
    </div> 
</body> 
</html> 

transforme tout vert

Questions connexes