как маршрутизировать файлы css / js в mvc.net - PullRequest
4 голосов
/ 07 августа 2011

Я пытаюсь добавить область в мое приложение, используя маршрутизацию в mvc.net. Для контроллеров я добавил:

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

как я могу таким же образом направить файлы css / js, т.е. я бы хотел, чтобы area1/content/site.css шел к /content/site.css или /content/area1/site.css.

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 августа 2011

как это

для /content/site.css

, если вы хотите всегда идти на сайт.css:

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

и если вы хотите перейти на другой CSS, предоставивИмя css:

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

для /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
                );
3 голосов
/ 21 августа 2011

Я не нашел способ сделать это с маршрутизацией MVC, что я закончил делать это: Я запустил этот код в модуле 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 - это регулярное выражение в моем случае:

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

в global.asax я добавил:

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

, чтобы mvc.net не мог направлять эти запросы.

Можно также настроить iis6 / iis7 на маршрутизацию запросов к статическим файлам через mvc.net, но я забыл детали.

Я выбрал этот метод из нескольких постов, которые я не могу вспомнить, поэтому я прошу прощения, что не могу отдать должное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...