Мне нужно отобразить на изображении таким образом
<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 . Бинарный в строку.
Тем не менее, intellisense сообщает мне, что существует метод перегрузки (byte [] filecontents, string fileType). Но когда я пишу приведенный выше код, я получаю сообщение об ошибке. Я что-то упустил?
EDIT
Спасибо за ответ. Я столкнулся с аналогичной проблемой при загрузке файла изображения. Вот мой метод действия
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.Binary to Byte []
То, что я сделал, было (i) создать новый класс с именем ImageDataClass , (ii) выполнить вышеуказанную операцию с этим классом, (iii) выполнить явное преобразование из ImageDataClass в Image, и ( iv) сохранить в БД с помощью Linq.
Не думаю, что это должно быть так сложно. Есть ли способ заставить его работать, используя просто метод расширения, такой как ToArray , как для другого случая ???
Спасибо за помощь