Могу ли я создать маршрут, который соответствует уже игнорируемому маршруту? - PullRequest
0 голосов
/ 29 сентября 2011

Итак, в моем global.asax есть следующее, создающее мои маршруты MVC. Они вызываются в том порядке, в котором они появляются ниже. Я ожидал, что он проигнорирует маршруты к папке css, но затем создаст маршрут к css / branding.css (который генерируется во время выполнения из другого представления)

_routeCollection.IgnoreRoute("css/{*pathInfo}");

_routeCollection.MapRoute("BrandingCSS", "css/branding.css", new { controller = "Branding", action = "Css" });

Разве это не возможно? Когда я делаю запрос к css / branding.css, я получаю сообщение об ошибке 404 о том, что файл не существует. Есть ли способ заставить это работать, я бы предпочел, чтобы кто-то просматривал исходные тексты, чтобы этот файл поступал откуда угодно, кроме папки css.

1 Ответ

1 голос
/ 29 сентября 2011

Вы можете создавать и обслуживать пользовательский файл CSS, установив RouteConstraint в своем IgnoreRoute.Создайте следующее ограничение:

public class NotBrandingCss : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return values[parameterName].ToString().ToLowerInvariant() != "branding.css";
    }
}

Затем измените свой IgnoreRoute на следующее:

_routeCollection.IgnoreRoute("css/{*pathInfo}", new { pathInfo = new NotBrandingCss() });

Теперь запрос на /css/branding.css не выполнит ваш IgnoreRoute и перейдет к вашемуМаркировка CSS по маршруту и ​​др.

...