2014-09-22 12 views
1

我正在做一个简单的事情来在ASP.NET MVC视图中呈现图像。如果条件需要使用c#。我使用如下:如果在@ {}中的条件在ASP.NET MVC中<dd> Razor视图

<dd> 
     @{ byte[] photo = @Model.Photo; 
      string imageSrc = null; 
      if (photo != null) { } 

      //Logic 

     } 

     <img src="" alt="Image" />  

    </dd> 

我收到异常{是必需的。任何帮助?我相信,我不需要任何括号

+1

从@ Model.Photo ;,删除@它应该工作。 – Adithya 2014-09-22 19:48:57

+0

不,它不会。我试过 – 2014-09-22 19:51:58

回答

2

there

<img src="data:image/png;base64,@Convert.ToBase64String(Model.Photo, Base64FormattingOptions.None)" 
    alt="Image" /> 

注意转换字节数组的base64字符串(Convert.ToBase64String),它给你你想要什么。

+0

这是一个很好的答案。但是我并没有进行内联转换,因为我需要从照片长度中减去78。照片来自Microsoft Northwind数据库,它是一个OLE对象。任何我们可以从78开始不是在内嵌转换的0? – 2014-09-22 19:35:48

+0

当我试着低于传递偏移值时,它会抛出无效参数 Image 2014-09-22 19:43:59

0

好这个工作

<img src="data:image/png;base64,@Convert.ToBase64String(Model.Photo,78,Model.Photo.Length-78 ,Base64FormattingOptions.None)" 
      alt="Image" /> 
+1

您可能想将我的答案标记为接受。另外,我建议在视图中不要对视图模型做任何事情,并在控制器中执行此操作。 – AgentFire 2014-09-22 20:05:27

+0

是的,这是下一个。我将重构这个 – 2014-09-23 01:16:49

+0

有时转换'base64'如图所示在这个答案在IE中创建问题...只是检查它... – 2014-09-23 06:29:37

0

@Debug_mode,我建立一个简单的MVC应用程序,它为我尝试这样做。

<dd> 
    @{ 
     byte[] photo = Model.Photo; 
     string imageSrc = null; 
     if (photo != null) { } 
     //Logic 
    } 

    <img src="" alt="Image" />  

</dd> 

注:如果我们使用C#块@ {..}我们不想使用“@”来访问@ {....} C#块内S​​ever的性质,即它应该是简单的模型。照片代替@ Model.Photo。

相关问题