【问题标题】:ASP.NET MVC images and other static content urlASP.NET MVC 图像和其他静态内容 url
【发布时间】:2010-10-22 21:40:58
【问题描述】:

我刚刚编辑了用户详细信息页面的路线,如下所示:

        routes.MapRoute(
            "UserDetails", // Route name
            "{controller}/{action}/{id}/{title}", // URL with parameters
            new { controller = "Users", action = "Details", id = UrlParameter.Optional, title = UrlParameter.Optional } // Parameter defaults
            );

现在我的网址看起来像这样:localhost/Users/Details/1/ShawnMclean 图像不会同时从控制器和 site.master 加载。 (不知道为什么css和javascript有正确的url)。如果 url 是 localhost/Users/Details/1 则一切正常。

我在site.masterDetails.aspx 中的img 在旧网址中看起来像这样:

<img src="../../Content/Images/logo3.png" />

但是当url获取一个附加参数时,图片实际上位于../../../Content/Images/logo3.png

有没有办法让图片和其他静态内容的 url 发生变化?

【问题讨论】:

  • 你的 site.master 中的代码是什么?

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


【解决方案1】:

尝试像这样链接您的图片:

<img src="/Content/Images/logo3.png" /> 

或者如果这不起作用,您可以随时为链接使用帮助器

<img src="<%= Url.Content("~/Content/Images/logo3.png") %>" />

另一种方式可能是

<img src="@Url.Content("~/Content/Images/logo3.png")" />

【讨论】:

  • 我的路线最重要。
  • 为什么/Content/Images/logo3.png 有效?第一个斜线是否使它从站点根目录开始?
  • / 用于绝对(根)。 ../ 是相对的。始终尝试使用绝对路径。 MVC 的正确方法是使用Url.Content(~/)
  • 第二个例子似乎是错误的。 &lt;%=Url...之前真的应该有一个斜杠吗?
  • @stom:这应该是一个新问题,来自 SO 社区的人会很乐意提供帮助。您在数据库中的路径不起作用的原因可能是因为您存储的是本地路径而不是基于 http 的 url。当浏览器加载带有以c:/ 开头的img 标签的网页时,它不知道如何访问它。从站点根目录开始您的路径。所以如果你的图片在这里:http://example.com/images 那么你的 img 标签应该以 /images 开头。
【解决方案2】:

您可以尝试使用助手:

<img src='<%= Url.Content( "~/Content/Images/pic.jpg" ) %>' alt="My Image" />

【讨论】:

    【解决方案3】:

    你可以试试这个,

    <a href="/"><img src="<%=Url.Content("~/Content/Images/logo.png")%>" alt="logo" title="Logo" /></a> 
    

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 1970-01-01
      • 2013-12-02
      • 2011-06-03
      • 2017-11-08
      • 2010-12-28
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      相关资源
      最近更新 更多