在View中使用img标签显示静态图片

时间:2014-09-22 08:09:43

标签: asp.net-mvc-5

我正在从ASP.NET迁移到MVC并且无法显示简单的图像。我有一个控制器:

Public Class LinkedImageController
    Inherits Controller

    ' GET: LinkedImage
    Function Index() As ActionResult
        Return View()
    End Function
End Class

和视图:

<img src="~/Views/LinkedImage/grey_336x280.gif" alt="Views-LinkedImage" /><!-- Doesn't work -->
<img src="~/Content/LinkedImage/grey_336x280.gif" alt="Content-LinkedImage"/><!-- Works -->

我在Views / LinkedImage文件夹和Content / LinkedImage文件夹中有图像副本,并且两者都设置为复制到输出文件夹。

正如您在View中的评论中看到的那样,只有链接到Content文件夹下的文件的<img...标记才能正确显示图像。

虽然这只是我想要的单个图像是一个在MVC框架中显示现有HTML调查表的设计,所以我必须找出可以存储各种静态文件的位置。

我是MVC的新手所以我假设无法显示View文件夹中的图像,因为路由会以某种方式影响它。它是否正确?如果没有,为什么只显示一个图像?

1 个答案:

答案 0 :(得分:2)

Views文件夹的Web.config中的这一行阻止直接访问其中的文件:

<system.webServer>
  <handlers>
    <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  </handlers>
</system.webServer>

最佳策略是将您的静态内容放在〜/ Content(或您在应用程序根目录中创建的其他文件夹中,如果您愿意) - 您不希望冒险让恶意用户访问代码中的代码你的意见。