如何在asp.net的上下文中保持razor变量

本文关键字:razor 变量 上下文 asp net | 更新日期: 2023-09-27 17:59:14

这是我的视图代码。

@{
     string file = "~/Content/Images/" + User.Identity.GetUserId() + ".png";
     if (File.Exists(file))
     { 
        var imgUrl = Url.Content("~/Content/Images/" + User.Identity.GetUserId() + ".png") + "?time=" + DateTime.Now.ToString(); 
     }
     else
     { 
        var imgUrl = Url.Content("~/Content/Images/Default_Profile.png") + "?time=" + DateTime.Now.ToString(); 
     }
 }
   <img src="@imgUrl" height="50" width="50" />

我在我的src属性中得到一个错误,如下面的行所示

<img src="@imgUrl" height="50" width="50" />

我收到一个错误,说imgUrl不在上下文中。如何解决此问题?我尝试使用<span>,也尝试将其放入{}中,但没有成功。我也尝试过为src属性加引号,但效果不太好。

如何在asp.net的上下文中保持razor变量

您需要在if语句之外声明imgUrl变量,因为它在自己的作用域中。

@{
    string file = "~/Content/Images/" + User.Identity.GetUserId() + ".png";
    var imgUrl = string.Empty;
    if (File.Exists(file))
    { 
         imgUrl = Url.Content("~/Content/Images/" + User.Identity.GetUserId() + ".png") + "?time=" + DateTime.Now.ToString(); 
    }
    else
    { 
         imgUrl = Url.Content("~/Content/Images/Default_Profile.png") + "?time=" + DateTime.Now.ToString(); 
    }
    <img src="@imgUrl" height="50" width="50" />
}
     @{
      string imgUrl = string.Empty;
      string file = "~/Content/Images/" + User.Identity.GetUserId() + ".png";
      if (File.Exists(file))
      { 
          imgUrl = Url.Content("~/Content/Images/" + User.Identity.GetUserId() + ".png") + "?time=" + DateTime.Now.ToString(); 
      }
      else
      { 
         imgUrl = Url.Content("~/Content/Images/Default_Profile.png") + "?time=" + DateTime.Now.ToString(); 
      }
      <img src="@imgUrl" height="50" width="50" />
    }  
请在if和else范围之外声明imgUrl变量。