绝对图像路径不适用于 MVC 5 中的 <img>

absolute image path doesn't work with <img> in MVC 5

我正在尝试显示其路径存储在模型中的图像。

模型中存储的绝对路径映射到存储上的物理路径。

这个有效:

$("#uploadresults").prepend('<img src="../../Uploads/_MG_9806.jpg" alt="" />');

但是这不起作用:

$("#uploadresults").prepend('<img src= "'+@Url.Content(Model.ImageUrl) +'" alt="Image" />');

Model.ImageUrl = "C:\Users\Emad\Documents\Visual Studio 2013\Projects\projects_notworking\MarketSurvey\MarketSurvey\Uploads\_MG_9806.jpg"

在我看来,我只能使用相对路径来让它工作。有没有办法将我的物理路径转换为相对路径?

尝试改用虚拟路径:

Model.ImageUrl = "~/MarketSurvey/Uploads/_MG_9806.jpg";

虚拟路径是相对于您的 Web 项目文件夹的,因此您可能需要根据 MarketSurvey 是您项目中的文件夹还是您的项目文件夹本身来调整它。

而且这个更简单的视图代码应该工作得更好:

$("#uploadresults").prepend('<img src="@Url.Content(Model.ImageUrl)" alt="Image" />');

我没有使用 jquery 来更新页面上的图像,而是像这样在我的视图中使用了服务器端变量。这对我有用:

<div id="uploadresults" class="">
    @foreach (var item in Model.Images)
    {
        <img src="@item.ImageUrl.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], "../../")" width=100 height=100 />
    }
</div>

当然要归功于此 post:Getting relative virtual path from physical path