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

时间:2016-07-29 10:12:20

标签: c# asp.net asp.net-mvc razor

这是我的观看代码。

@{
     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属性的引号,但它也没有用。

3 个答案:

答案 0 :(得分:2)

您需要在imgUrl语句之外声明if变量,因为它在自己的范围内。

@{
    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" />
}

答案 1 :(得分:0)

     @{
      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" />
    }  

答案 2 :(得分:0)

请在if和else范围之外声明imgUrl变量。