如何路由到mvc.net中的css / js文件

时间:2011-08-07 06:40:26

标签: css asp.net-mvc routing

我正在尝试使用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 个答案:

答案 0 :(得分:4)

像这样

代表/content/site.css

如果你想总是去site.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
                );

答案 1 :(得分:3)

我没有找到用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将请求路由到静态文件,但我忘记了详细信息。

我从几个我不记得的帖子中选择了这个方法所以我道歉我无法给予适当的信任。