0

所以,我的 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 文件夹之外的任何地方。

4

1 回答 1

1

RouteConstraint您可以通过在 IgnoreRoute 中设置 a 来创建和提供自定义 css 文件。创建以下约束:

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,并将转到您的 BrandingCSS 路由等。

于 2011-09-28T21:15:14.823 回答