4 votes

comment acheminer les fichiers css/js dans mvc.net

J'essaie d'ajouter une zone à mon application en utilisant le routage dans mvc.net. Pour les contrôleurs, j'ai ajouté :

routes.MapRoute(
                "Area1", // Route name
                "Area1/{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

comment puis-je acheminer les fichiers css/js de la même manière, c'est-à-dire que je voudrais avoir area1/content/site.css va /content/site.css ou à /content/area1/site.css .

Gracias

4voto

Safran Ali Points 2469

Comme ceci

pour /content/site.css

si vous voulez toujours aller sur site.css :

routes.MapRoute(
                "Area1", // Route name
                "/{action}/site.css", // URL with parameters
                new { controller = "Area1", action = "content" } // Parameter defaults
            );

et si vous voulez obtenir un css différent en fournissant le nom du css :

routes.MapRoute(
                "Area1", // Route name
                "/{action}/{resource}.css", // URL with parameters
                new { controller = "Area1", action = "content", resource = UrlParameter.Optional } // Parameter defaults
            );

pour /content/area1/site.css

routes.MapRoute(
                    "Area1", // Route name
                    "/{action}/Area1/{resource}.css", // URL with parameters
                    new { controller = "Area1", action = "content", resource = UrlParameter.Optional } // Parameter defaults
                );

3voto

Aditya Points 1

Je n'ai pas trouvé de moyen de faire cela avec le routage mvc, ce que j'ai fini par faire : J'ai exécuté ce code dans un module http :

void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication Application = sender as HttpApplication;

            var match = r.Match(Application.Request.Url.AbsolutePath);
            if (match.Success)
            {
                var fileName = match.Groups[2].Value;
                Application.Context.RewritePath("/" + fileName);
            }
        }

r est un regex dans mon cas :

private readonly Regex r = new `Regex("^/gmail(/canvas)?/((content|scripts|images|tinymce).*)$", RegexOptions.IgnoreCase);`

dans global.asax j'ai ajouté :

routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|jpg)(/.*)?" });

pour empêcher mvc.net de router ces requêtes.

il faut peut-être aussi configurer iis6/iis7 pour qu'il achemine les requêtes vers les fichiers statiques via mvc.net mais j'ai oublié les détails.

J'ai appris cette méthode à partir de plusieurs messages dont je ne me souviens pas, alors je m'excuse de ne pas pouvoir en donner le crédit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X