【问题标题】:Cannot load photo locally in ASP.NET MVC无法在 ASP.NET MVC 中本地加载照片
【发布时间】:2018-02-06 20:06:41
【问题描述】:

所以,我正在创建一个 ASP.NET(MVC5) 应用程序,我想在其上使用 img 标记显示图像:

<img src='@Url.Content(Path.Combine(Server.MapPath("~/Products-Data"), product.Name, product.ThumbnailImage))' />

问题是没有浏览器实际加载图像。有趣的是剃须刀引擎生成的链接是有效的,如果我从另一个浏览器选项卡打开它,我可以看到图像。经过一番搜索,我注意到在 chrome 控制台中,出现了这个错误:

我发现了很多关于此错误的主题(更改 web.config 中的设置,使用 --allow-file-access-from-files 标志和等),但这些都没有真正起作用。这将是一个真实的应用程序......但目前我需要在本地测试它,并检查一切是否正常。伙计们,这里有什么工作吗?

【问题讨论】:

  • 在您的控制器中获取您的照片地址,然后使用 viewbag 或其他东西发送它,然后您在控制器中跟踪问题。
  • 为什么要使用引用本地文件系统的路径?为什么不是 HTTP(S) URL?
  • 不要将Server.MapPath 用于将在客户端(在浏览器中)解析的虚拟路径。只需使用虚拟路径。 Url.Content 已经处理了任何必要的路径映射/生根。这里开发环境和生产环境没有区别。

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

您只需要使用相对路径生成路径,将其解析为绝对路径是行不通的,因为它将是服务器特定驱动器位置的路径,大部分时间都在工作目录之外Web 应用程序,浏览器无法使用物理路径获取资源,因此对您不起作用。

你需要这样做:

<img src="@Url.Content(String.Format("~/Products-Data/{0}/{1}", product.Name, product.ThumbnailImage))" />

如果你通过Model对象传递相对路径并且视图只有显示代码会更好,视图不应该包含生成路径的逻辑。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2015-06-06
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    相关资源
    最近更新 更多