世界!我有一个“a”标签的奇怪之处。最重要的想法是渲染这样的东西:<a href="/*Retrieve an original sized image from database*/"><img src="/*Retrieve an original sized image and resize to thumbnail*/"/> </a>
。
这是我需要实现一些jQuery缩放图像插件。我有两种方法 - 一种只是获取图像形式的数据库,另一种是制作缩略图。
问题是我的操作的浏览器行为不同:FF,Chrome,Opera在另一个窗口中显示原始图像(如预期的那样)。 Safari提供下载名为“GetImageThumbnail”的jpg文件,IE提供下载名为GetImageThumbnail的未知文件(打开为jpeg图像)。
这是锚点href文本:"/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;
}
方法从DB中检索图像:
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>
我做错了什么?
答案 0 :(得分:1)
在“ImageReadyFileContentResult()”方法中,指定内容类型。