Asp.net mvc 在mvc.net内核中从数据库加载图像
我有一个数据库和一个dbinitializer类,它用测试数据填充数据库。我的一个表中的一列用于存储图像的字符串路径。ie:Image=“~/Content/Images/example.img” 然后,我的视图模型应该为表中的每个项目渲染图像Asp.net mvc 在mvc.net内核中从数据库加载图像,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,我有一个数据库和一个dbinitializer类,它用测试数据填充数据库。我的一个表中的一列用于存储图像的字符串路径。ie:Image=“~/Content/Images/example.img” 然后,我的视图模型应该为表中的每个项目渲染图像 @foreach (var item in Model) { <img style="width:200px;height:250px;" src="@Url.Content(item.Image)" alt="@item.Name
@foreach (var item in Model) {
<img style="width:200px;height:250px;" src="@Url.Content(item.Image)" alt="@item.Name" />
}
@foreach(模型中的变量项){
}
这种精确的方法适用于我的普通mvc应用程序,但当我尝试在我的核心应用程序中模拟完全相同的代码时,图像无法渲染。有人知道我为什么会遇到这个问题吗?在ASP.NET core中,默认情况下,静态文件仅从
wwwroot
文件夹提供。这意味着,如果您试图从目录/图像(即您的根目录)访问文件,它将无法工作
好消息是,您可以根据需要配置静态文件位置。因此,在启动时更新您的Configure
方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
// Your existing code goes here
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"Content/Images")),
RequestPath = new PathString("/Images")
});
}
现在,可以像下面这样从浏览器中访问这些图像yourSiteName/images/imageFile.png
现在,您可以修复视图代码以从此路径获取图像
@foreach (var item in Model)
{
<div>
<img src="@Url.Content("~/Images/"+item.Image)" />
</div>
}
@foreach(模型中的变量项)
{
}
假设集合中每个项目的item.Image
值都有类似于MyImage.png
的值,并且您有一个名为MyImage.png
的图像,它位于应用程序根目录中的Contents/Images
你也可以考虑把这些图片移到WWW目录,因为ASP.NET团队为这个目的添加了目录(静态资产)。
在我制作这篇文章后,我记得看到了WWW根文件夹并修改了我的条目。ie:~/wwwroot/images/cardImages。我想可能还有一些我不知道的细微差别?css文件和其他所有东西都在这个默认根文件夹中,我想使用Core的约定。一位好友建议我应该使用core,因此我正在尝试迁移我的项目,正如我在回答中所解释的,如果您的图像位于wwwroot
目录中,您可以通过GET请求访问其中的项目(只需尝试在浏览器中访问资源)。这是因为asp.net核心允许从该位置提供静态文件服务。如果您的内容文件夹中有这些图像(类似于asp.net之前的core apps样式的应用程序根目录),则需要更新到Configure
方法。