Параметр 'inArray' становится нулевым. Почему? - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь загрузить изображение из базы данных.

Я использовал этот код в своем представлении:

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

, но я получаю эту ошибку в браузере:

Значение не может быть нулевым. Имя параметра: inArray

Мой класс модели:

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();
}

В чем проблема?

1 Ответ

1 голос
/ 06 октября 2019

Согласно документам , inArray 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" / > 
    }

...