参数 'inArray' 变为空。为什么?

The parameter 'inArray' is coming null. Why?

我正在尝试从数据库加载图像。

我在我看来使用了这段代码:

@foreach (var item in ViewBag.Base64String)
{
    var base64 = Convert.ToBase64String(item.ImageData);
    var imgSrc = String.Format("data:image/jpg;base64,{0}", base64);

    <p>id:@item.NewsId</p>
    <img alt="" src="@imgSrc" style="height:100px;width:100px;" />
}

但我在浏览器中收到此错误:

Value cannot be null.Parameter name: inArray

我的模型class:

public class News
{
    [Key]
    public int NewsId { get; set; }
    public string Title { get; set; }
    public string Category { get; set; }
    public byte[] ImageData { get; set; }
    public string MainComment { get; set; }
}

我的控制器:

WebContext db = new WebContext();

public ActionResult News()
{
       ViewBag.Base64String = db.AllNews.ToList();
       return View();
}

有什么问题吗?

根据docsinArray is null指的是ArgumentNullException.

这意味着,在您的某些记录中,字段 ImageData 为空或为空,这会通过 ToBase64String 引发异常。

您可以使用 if-clause 并设置默认图像,以防记录没有 ImageData;例如:

@if(item.ImageData != null) {  
        var base64 = Convert.ToBase64String(item.ImageData);  
        var imgsrc = string.Format("data:image/jpg;base64,{0}", base64); 
        <img src = '@imgsrc'  
        style = "max-width:100px;max-height:100px" / >  
    }  
    else { 
          <img src = "~/img/avatar-default.jpg"  
                   style = "max-width:100px;max-height:100px" / > 
    }