RDLC Report Viewer Control - Как открыть изображения в другом окне / вкладке
У меня есть изображения в базе данных (SQlServer 2008 R2) в столбце varbinary. Мой отчет разработан в ASP.net 3.5 в Visual Studio 2010. В своем отчете в таблице я использую изображение, задаю тип MIME для image/jpeg, источник изображения - база данных, и изображение отображается в отчете правильно. Все работает!! Теперь моя проблема в том, что я хотел бы добавить гиперссылку на это изображение, чтобы, когда пользователь нажимает на изображение, оно открывалось в другом окне / вкладке в исходном формате. Это поможет пользователю ближе познакомиться с изображением. Я пытался добавить гиперссылку - Перейти к URL - Выражение
="http://localhost:49170/MtkMobileDeposit_FailedTransaction/Account/ReportByUserName.aspx?BackImageOriginal=" & Поля!BackImageOriginal.Value
Но я не могу заставить его отображать только изображение. Вместо этого он отображает весь отчет в новой вкладке. Как мне сначала получить URL для работы изображений? Пожалуйста помоги.
Спасибо sdd
1 ответ
Лучше всего использовать httphandler для обработки вашего запроса.
Создайте ImageHandler.ashx, который будет принимать идентификатор записи. Затем вы можете получить байтовый массив изображения и вывести его на экран.
Ваш новый URL будет выглядеть
"/ImageHandler.ashx?Record_ID=" & Поля!RecordId.Value
public class ImageHandler : IHttpHandler
{
public int Record_ID
{
get { return Convert.ToInt32(HttpContext.Current.Request.QueryString["Record_ID"]); }
}
public void ProcessRequest(HttpContext context)
{
// get image from database into a byte array
Component.ImageController objImageController = new Component.ImageController();
Component.ImageInfo objImageInfo = objImageController.getImage(Record_ID);
byte[] byteArray = objImageInfo.photo;
// output it to the screen
context.Response.Clear();
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(byteArray);
context.ApplicationInstance.CompleteRequest();
}
public bool IsReusable
{
get
{
return false;
}
}
}