Мне нужно отобразить изображение в представлении таким образом
<img src = <% = Url.Action("GetImage", "Home", new { productID })%>
Это действие, которое должно предоставить данные
public FileContentResult GetImage(int ID)
{
var img = db.Images.Where(p => p.ID == ID).First();
return File(img.ImageData, img.ImageMimeType);
}
Этот пример взят из Pro ASPNET.NET MVC (Стивен Сандерсон / APress). Я получаю следующую ошибку: Лучшее совпадение метода перегрузки для System.Web.Mvc.Controller.File (строка, строка) имеет недопустимый аргумент. Невозможно преобразовать из System.Data. Linq.Binary в строку.
Тем не менее, intellisense сообщает мне, что существует метод перегрузки (byte [] filecontents, string fileType). Но когда я пишу приведенный выше код, я получаю сообщение об ошибке. Я что-то упускаю?
ИЗМЕНИТЬ
Спасибо за ответ. У меня возникла аналогичная проблема при загрузке файла изображения. Вот мой метод действий
public ActionResult AddImage(HttpPostedFileBase image)
{
if(image != null)
{
var img = new Image();//This Image class has been
//created by the DataContext
img.ImageMimeType = image.ImageMimeType
img.ImageData = new byte[image.ContentLength];
image.InputStream.Read(img.ImageData, 0, image.ContentLength);
}
}
Я получаю ошибку для последней строки: «image.InputStream.Read (myImage.ImageData, 0, image.ContentLength);» Он говорит, что не может преобразовать System.Data.Linq. Из двоичного в байтовый []
Я сделал следующее: (i) создал новый класс под названием ImageDataClass, (ii) проделал указанную выше операцию с этим классом, (iii) выполнил явное преобразование из ImageDataClass в Image и (iv) сохранить в БД с помощью Linq.
Я не думаю, что это должно быть так сложно. Есть ли способ заставить его работать, используя простой метод расширения, такой как ToArray, как в другом случае ???
Спасибо за помощь