【问题标题】:Addressing an images in View with its local path使用本地路径寻址 View 中的图像
【发布时间】:2014-03-31 06:33:05
【问题描述】:

如何在 ASP.NET MVC 项目中显示此图像?

我试过了,但它不起作用:

<img src="C:\BBBB\1.png" />

请问有什么绝妙的建议吗?

非常感谢!

【问题讨论】:

  • 不要使用这样的完整路径,使用相对路径即可。
  • @safetyOtter,那行不通。我的项目通过虚拟目录部署到 IIS 中。那么如何访问该路径呢?
  • 这是服务器上的路径还是客户端目录中的路径?
  • 这不是服务器上处理文件的常用方法!使用Server.MapPath("~/directory/filename"),其中~ 代表网站根访问其服务器上的本地地址

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


【解决方案1】:

我做了类似的事情来显示工资单。我不希望从 wwwroot 中访问它们。

有关通过 mvc 操作提供图像的信息,请参阅本文。

ASP.NET MVC3: Image loading through controller

public ActionResult ShowImage(id) 
{
    var file = @"C:\BBB\"+id;
    var ext = file.Split('.').Last();
    return File(file, "image/"+ext, Path.GetFileName(file));
}

这样称呼它:

<img src="@Url.Action("ShowImage",new { id="1.png" })" alt="1.png"/>

对于循环,您可以在现有视图中执行以下操作:

 for (var i = 1; i < 10; i++ ) {
    @Html.Partial("ShowIfExists", new {id=i.ToString()+".png" })
 }

创建一个名为 _ShowIfExists.cshtml 的新 Razor 视图

 <img src="@Url.Action("ShowImage",new { id=Model })" alt="1.png"/>

并添加相应的动作:

public ActionResult ShowIfExists(id)
    if ( System.IO.File.Exists(@"C:\BBB\"+id) )
        return PartialView("_ShowIfExists",null,id);
    }
    return new EmptyResult();
}

【讨论】:

  • 我实际上是在尝试在循环 1..2...png 中显示图像并检查它是否存在。我该怎么做?
【解决方案2】:

图片标签的 src 需要指向图片在网络服务器上的位置。

<img src="http://myserver.com/myimage.png" />

【讨论】:

  • 如果服务器是IIS,这个http://myserver.com/是指inetpub\wwwroot吗?
  • 可以,但它甚至可能不是您的服务器。您可以从内容网站(photobucket、flickr 等)中提取图像
  • 但是,我在这里动态生成这些照片!
  • 那么路径将取决于您放置图像的位置,该路径是否有虚拟目录,以及您是否正在生成图像并直接推送而不将其存储在服务器上。
【解决方案3】:

您需要引用具有这样相对地址的图像:../images/1.png

查看本教程以开始:W3schools Html Tutorial/img Tag

【讨论】:

    【解决方案4】:

    如果您坚持显示本地图像,则应包含协议,在本例中为 file://:

    <img src="file://C:/BBBB/1.png" />
    

    这对于实际项目来说不是一个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 2022-10-05
      • 1970-01-01
      • 2013-02-23
      • 2023-03-04
      • 1970-01-01
      • 2022-07-22
      相关资源
      最近更新 更多