Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在mvc.net内核中从数据库加载图像_Asp.net Mvc_Asp.net Core - Fatal编程技术网

Asp.net mvc 在mvc.net内核中从数据库加载图像

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

我有一个数据库和一个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(模型中的变量项){
}

这种精确的方法适用于我的普通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
方法。