代码之家  ›  专栏  ›  技术社区  ›  Josh

当前上下文中不存在名称“Server”

  •  0
  • Josh  · 技术社区  · 4 年前

    我有一个剃刀视图页面,在尝试向用户显示文件之前,我需要检查文件是否存在,否则显示默认的图像占位符。 下面是我写的代码

    @{
     if (!string.IsNullOrEmpty(@parent.Photo) && File.Exists(Server.MapPath($"~/images/parents/thumbs/@parent.Photo")))
        {
          <img src="~/images/parents/thumbs/@parent.Photo" class="rounded- 
           circle img-fluid" />
         }
         else
         {
          @: No photo
         }
     }
    

    但我得到的错误如下

    当前上下文中不存在名称“Server”

    因此,我无法构建应用程序。 我已尝试在视图页面上使用语句添加以下内容

    using System;
    using System.IO;
    

    但这没什么区别

    我的应用程序运行在ASP。windows 10上的NET Core 3.1

    0 回复  |  直到 4 年前
        1
  •  5
  •   Mohsen Esmailpour    4 年前

    Server.MapPath 不会在ASP中退出。网。核心,而你应该使用 IWebHostEnvironment 界面。注入 IWebHostEnvironment 进入你的视野并使用它。

    @inject IWebHostEnvironment env
    
    @{
     var path = Path.Combine(env.WebRootPath, $"images/parents/thumbs/@parent.Photo"));
     if (!string.IsNullOrEmpty(@parent.Photo) && File.Exists(path))
        {
          <img src="~/images/parents/thumbs/@parent.Photo" class="rounded- 
           circle img-fluid" />
         }
         else
         {
          @: No photo
         }
     }
    

    如需更多信息,请阅读本文 Server.MapPath Equivalent in ASP.NET Core .