Вот шаги, которые я хотел бы выполнить, чтобы изолировать проблему. Начните с простого действия контроллера, которое возвращает жестко закодированное изображение где-то с вашего жесткого диска:
public ActionResult GetImage(string param)
{
byte[] image = File.ReadAllBytes(@"c:\work\foo.png");
return File(image, "image/png");
}
Теперь перейдите непосредственно к /ControllerName/GetImage
в вашем браузере, и вы должны увидеть изображение.
Следующий шаг - извлечь изображение из базы данных и, вероятно, сохранить его на жестком диске, чтобы убедиться, что оно является действительным:
type obj = _someRepository.GetType(param);
File.WriteAllBytes(@"c:\work\foo.png", obj.Image.ToArray());
Теперь извлеките сгенерированный файл и посмотрите, действителен ли он. Последний шаг - убедиться, что URL, сгенерированный в теге <img>
, совпадает с тем, который вы использовали для непосредственного тестирования. Затем посмотрите на вкладку FireBug Net, чтобы узнать, правильно ли браузер запрашивает изображение и что возвращает сервер.
Скорее всего, проблема в том, что байтовый массив, возвращаемый из базы данных, не является допустимым изображением или является пустым.
Поскольку форма, которую вы указали в своем вопросе, предназначена для загрузки файлов, она не имеет ничего общего с обслуживанием динамических изображений из действия контроллера, поэтому я не вижу, какое отношение это может иметь к вашему вопросу.