world! 나는 "a"태그가있는 이상한 점이있다. 큰 아이디어는 다음과 같이 렌더링합니다 : <a href="/*Retrieve an original sized image from database*/"><img src="/*Retrieve an original sized image and resize to thumbnail*/"/> </a>
.MVC3 면도날의 이미지로 앵커에서 브라우저가 다르게 동작합니다.
이것은 jQuery 줌 이미지 플러그인을 구현하는 데 필요한 것입니다. 두 가지 방법이 있습니다. 하나는 단순히 이미지 양식 DB를 얻고 다른 하나는 미리보기를 만듭니다.
문제는 내 작업에 따라 다릅니다. 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>
무엇이 잘못 되었나요?
'ImageReadyFileContentResult'는 무엇입니까? – bzlm
제공된'goodId '를 사용하여'GetFullSizedImage'에 대한 경로를 추가하십시오. "정적 컨텐츠"에 대한 쿼리 부분을 사용하여 일부 단점을 보게 될 수도 있습니다. – bzlm
메서드는 스트림으로 채워지는 byte [] 배열을 반환합니다.'byte [] data = new byte [outputstream.Length + 1]; outputstream.Read (data, 0, Convert.ToInt32 (outputstream.Length)); 반환 파일 (데이터, "image/jpg"); ' – Bassist