我正在从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文件夹中的图像,因为路由会以某种方式影响它。它是否正确?如果没有,为什么只显示一个图像?
答案 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(或您在应用程序根目录中创建的其他文件夹中,如果您愿意) - 您不希望冒险让恶意用户访问代码中的代码你的意见。