在MVC中显示图像

时间:2016-10-13 12:48:33

标签: c# asp.net-mvc razor

我正在尝试从数据库中显示图像。但是,我收到以下错误。

  

System.Web.Mvc.UrlHelper.Content(string)的最佳重载方法匹配包含一些无效参数。

这是我的代码:

<table>
    <tr>
        <td>
            Category ID
        </td>

        <td>
            Category Name
        </td>

        <td>
            Category Image
        </td>
    </tr>
    @foreach (var item in Model)
    {
    <tr>
        <td>@item.CategoryID</td>
        <td>@item.CategoryName</td>
        <td><img src="@Url.Content(item.CategoryImage)" /></td>

    </tr>
    }
</table>

2 个答案:

答案 0 :(得分:1)

这是我使用的代码:

    private static string ImageByteToBase64ImageTag(byte[] array)
    {
        string base64 = Convert.ToBase64String(array);
        return "<img class=\"img-responsive center-block\" src=\"data:image/png;base64," + base64 + " \"  />";
    }

在这种情况下,使用图像作为base64图像会更容易。我的代码很简单,但你要做的就是传递一个图像数组并得到一个base64字符串。如果格式正确,您甚至可以通过JSON返回图像。您只能在ViewBag或Model中返回以下部分:

ViewBag.ImageData = "data:image/png;base64," + base64String

在你的HTML中

  <img src="@Html.Raw(ViewBag.ImageData)" />

或者在您的模型中,只需为图像创建一个字符串属性即可。

答案 1 :(得分:-1)

public ActionResult GetImage()
{
   var imageFile = System.Web.HttpContext.Current.Server.MapPath("ImagePathHere");
   var srcImage = Image.FromFile(imageFile);
   using (var stream = new MemoryStream())
   {
      srcImage.Save(stream, ImageFormat.Png);
      return File(stream.ToArray(), "image/png");
   }
}