2012-08-06 139 views
0

我只是无法得到这个工作...... 我有以下途径:ASP.net MVC路由资源

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 /背景/ slide1_2048x1280.jpg

但图像不会显示出来,如果我检查我的控制台我得到以下错误: GET {我的本地}/CN /主页/ CSS/IMG /backgrounds/slide1_2048x1280.jpg 404(Not Found)

我很难理解路线系统..在那里我可以读更多ALOT更多关于这个?..有人可以帮助我解决这个问题,那么非常感谢!

+0

开箱即用,MVC项目模板的默认路由不会干扰映射到物理存在文件的URL。你在那里有'routes.RouteExistingFiles = true'吗? – 2012-08-06 14:03:53

+0

嗯...因为一些奇怪的原因,它似乎现在工作..:/ ... – Inx 2012-08-06 14:14:33

+0

一定是其他一些奇怪的问题..因为如果我访问{我的本地主机}/en-gb ..一切都很好..但如果我要访问{my localhost}/en-gb/Home/Index,图像不见了。 – Inx 2012-08-06 14:16:23

回答

1

我觉得已经下降相对URL的犯规在你的HTML。

既然你还没有说过这是Razor还是Aspx;我只是想和Aspx一起去。

当你写img标签似乎你可能会做:

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

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

你想要做的就是使用Url.Content("~/[full_path_to_file]")这将确保总是使用绝对路径。

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

+0

我怎么能看到,在我的:),感谢指出:) – Inx 2012-08-07 06:32:34

0

我通常会打1)stackoverflow(显然!),和2)msdn文档是相当不错的: http://msdn.microsoft.com/en-us/library/dd410120.aspx。但我通常最终专门搜索我需要的=)

但是,看起来像你试图设置一个路由来忽略某些文件类型? 我发现this article提供了一些关于如何处理这个问题的好主意。

我以前只屏蔽了一个或两个文件类型,而且每个文件类型都做了一行。不知道你是否可以具有由管道分隔扩展一行(|)就像你正在做什么(我可能是错的!)

routes.IgnoreRoute("{*allaspx}", new {[email protected]".*\.aspx(/.*)?"}); 
routes.IgnoreRoute("{*allswf}", new {[email protected]".*\.swf(/.*)?"});