0

我只是无法让它工作......我有以下路线:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("*.html|js|css|gif|jpg|jpeg|png|swf");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

routes.MapRoute(
    "Default", // Route name
    "{lama}/{controller}/{action}", // URL with parameters
    new { controller = "Home", action = "Index", lama = "en-gb" } // Parameter defaults
);

一旦我加载页面.. 我有一个 img 元素试图检索以下网址:css/img/backgrounds/slide1_2048x1280.jpg

但是图像不会显示,如果我检查我的控制台,我会收到以下错误:GET {my localhost}/cn/Home/css/img/backgrounds/slide1_2048x1280.jpg 404 (Not Found)

我很难理解路线系统..有没有什么地方我可以阅读更多关于这个的内容?..有人可以帮我解决这个问题,那将不胜感激!

4

2 回答 2

1

我认为你的 html 中的相对网址已经犯规了。

因为你还没有说这是 Razor 还是 Aspx;我只是要和 Aspx 一起去。

当您编写img标签时,您似乎正在执行以下操作:

<img src="[relative_path_to_file]" />,使用img相对于页面的路径。

如果这不开始,/那么几乎可以肯定你最终会遇到问题,特别是因为 MVC URL 没有映射到实际页面的路径。

您要做的是使用Url.Content("~/[full_path_to_file]")which 将确保始终使用绝对路径。

另一方面,您确实不需要为磁盘上存在的文件编写所有这些忽略路由。默认情况下,路由引擎不会路由现有文件 - 您必须在全局方法中设置routes.RouteExistingFiles = true才能RegisterRoutes路由已存在的文件;所以我认为你应该摆脱它们。

于 2012-08-06T14:42:30.797 回答
0

我通常会遇到 1)stackoverflow(显然!),以及 2)msdn 文档非常好:http: //msdn.microsoft.com/en-us/library/dd410120.aspx。但我通常最终会在谷歌上搜索我需要的东西=)

但是,看起来您正在尝试设置路由以忽略某些文件类型?我发现这篇文章给出了一些关于如何处理这个问题的好主意。

我之前只屏蔽了一种或两种文件类型,并且我为每种文件类型制作了一行。不确定您是否可以像您正在做的那样制作一条由管道(|)分隔的扩展名(我可能错了!)

routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
routes.IgnoreRoute("{*allswf}", new {allswf=@".*\.swf(/.*)?"});
于 2012-08-06T14:14:17.090 回答