【问题标题】:ASP.net MVC Routing resourcesASP.net MVC 路由资源
【发布时间】:2012-08-06 14:00:50
【问题描述】:

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

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 元素试图检索以下 url: css/img/backgrounds/slide1_2048x1280.jpg

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

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

【问题讨论】:

  • 开箱即用 MVC 项目模板的默认路由不会干扰映射到实际存在的文件的 URL。你在某处有routes.RouteExistingFiles = true吗?
  • 嗯...出于某种奇怪的原因,它现在似乎可以工作了.. :/...
  • 一定是其他一些奇怪的问题.. 因为如果我访问 {my localhost}/en-gb.. 一切都很好.. 但如果我访问 {my localhost}/en-gb/主页/索引,图像不见了..
  • 啊-这是您如何呈现 img 链接的问题-理想情况下,您应该使用 Url.Content 生成图像的正确绝对路径

标签: asp.net asp.net-mvc routing


【解决方案1】:

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

因为你还没有说这是 Razor 还是 Aspx;我只是打算使用 Aspx。

当您编写img 标签时,您似乎正在这样做:

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

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

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

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

【讨论】:

  • 我自己怎么看不到 :),谢谢指出 :)
【解决方案2】:

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

但是,您似乎正在尝试设置路由以忽略某些文件类型? 我找到了this article,它提供了一些关于如何处理这个问题的好主意。

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

routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
routes.IgnoreRoute("{*allswf}", new {allswf=@".*\.swf(/.*)?"});

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多