从硬盘内剃刀视图渲染图像

本文关键字:图像 视图 剃刀 硬盘 | 更新日期: 2023-09-27 17:49:21

我有一堆文件夹,其中每个文件夹都存储在我的本地磁盘上。该路径在web中被引用。配置,所以有一天当我把项目放到网上时,我可以很容易地改变这个文件夹的路径。

<add key="MyImagesFolder" value="E:'MyImages'" />

然后将这个值加载到razor视图中,然后使用img src

显示图像
@{
   string imagesFolder = ConfigurationSettings.AppSettings["MyImagesFolder"].ToString();
   foreach (var item in @Model.Images) {
      <img src="@imagesFolder/@item.FilePath" alt="@item.Description" />
   }
}

image SRC值在调试中捕获

E:''MyImages''100/1.jpg

其中100表示MyImages文件夹下的文件夹。

图片根本不渲染。

我做错了什么?

从硬盘内剃刀视图渲染图像

您正在呈现带有src属性的html img标记,这些属性指向服务器文件系统上的图像路径。src属性必须包含来自web应用程序的url,这将提供一种通过HTTP协议访问HTTP客户端(web浏览器)的图像的方法。

src属性需要看起来像:

http://yourwebserver/yourapp/images/1.jpg

或相对url:

./yourapp/images/1.jpg

问题是web浏览器没有任何方法直接抓取到您的web服务器文件系统

一个可能的解决方案是将你的images文件夹放入MVC项目中,并呈现相对的url到你的img标签的src属性。

如果你只需要在与web服务器相同的机器上运行你的web客户端,你渲染src属性的方式也是有效的,但是在web服务器之外运行的客户端将看不到图像。如果您要经历这条路径,您仍然需要使用文件模式(即

)将这些src属性呈现为url。
file:///c:/images/1.jpg

见http://en.wikipedia.org/wiki/File_URI_scheme