мир! У меня есть странная вещь с тегом "а". Основная идея - сделать что-то вроде этого: <a href="/*Retrieve an original sized image from database*/"><img src="/*Retrieve an original sized image and resize to thumbnail*/"/> </a>
.
Это то, что мне нужно для реализации некоторых плагинов для масштабирования изображений jQuery. У меня есть 2 способа - один просто получает изображение из БД, другой - эскиз.
Проблема в поведении браузера, отличающемся от моих действий: FF, Chrome, Opera показывает оригинальное изображение в другом окне (как и ожидалось). Safari предлагает загрузить jpg-файл с именем «GetImageThumbnail», а IE предлагает загрузить неизвестный файл с именем GetImageThumbnail (открывается как изображение в формате jpeg).
Вот якорь href text: "/Image/GetFullSizedImage?goodId=20"
- одинаково во всех браузерах.
Это помощник в представлении:
@Html.GetImageLinkWithInnerImage(Model.Id)
.
Вот вспомогательная реализация (может быть полезна для людей, которые хотят создавать привязки и изображения во вспомогательных методах:)
public static MvcHtmlString GetImageLinkWithInnerImage(this HtmlHelper helper, int goodid)
{
var controller = helper.ViewContext.Controller as Controller;
if (controller != null)
{
var urlHelper = controller.Url;
var photoUrl = urlHelper.Action("GetFullSizedImage", "Image", new { goodId = goodid });
var anchorBuilder = new TagBuilder("a");
anchorBuilder.MergeAttribute("href", photoUrl + " ");
var innerPhotoUrl = urlHelper.Action("GetImageThumbnail", "Image", new { goodId = goodid });
var imgBuilder = new TagBuilder("img");
imgBuilder.MergeAttribute("src", innerPhotoUrl);
imgBuilder.MergeAttribute("alt", "Фото товара");
anchorBuilder.InnerHtml = imgBuilder.ToString(TagRenderMode.SelfClosing);
return MvcHtmlString.Create(anchorBuilder.ToString());
}
return null;
}
И метод извлекает изображение из БД:
public FileContentResult GetFullSizedImage(int goodId)
{
byte[] imageData = _db.GetGood(goodId).Image;
if (imageData != null)
{
int imageWidth;
int imageHeight;
var imageFile = GetImageFromBytes(imageData, out imageWidth, out imageHeight);
return ImageReadyFileContentResult(imageWidth, imageFile, imageHeight);
}
return NoPhotoFileContentResult();
}
Это вывод HTML:
<a href="/Image/GetFullSizedImage?goodId=20 "><img alt="Фото товара" src="/Image/GetImageThumbnail?goodId=20" /></a>
Что я делаю не так?