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

RouteConstraintIgnoreRoute で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 に答える