Я работаю над галереей изображений, где пользователь может загружать изображения. Загруженное изображение преобразуется в миниатюру и помещается в определенную папку для эскизов, а исходное изображение помещается в папку для полноразмерных изображений., показывающий миниатюру после загрузки изображения
В методе Page_Load в коде позади я получаю миниатюры из папки и привязываю их к ретранслятору, который я использую, а это означает, что все изображения в этой папке отображаются при загрузке страницы.
Когда пользователь выбирает загрузку изображения, вызывается функция UploadButton_Click, файл обрабатывается, а затем отображается в полном размере. Все прекрасно работает, что миниатюра загруженного изображения не отображается непосредственно после ее загрузки. Чтобы показать это, вы должны перезагрузить страницу, чтобы снова загрузился Page_Load.
Конечно, восточным способом решения этого является поместить код для извлечения эскизов и привязки элемента Repeater даже в функции UploadButton_Click, но это DRY, который мне не нравится.
Есть ли лучший, более элегантный способ решения этой проблемы?
код позади:
protected void Page_Load(object sender, EventArgs e) {
var directory = new DirectoryInfo(Gallery.PhysicalApplicationPath + "/Images");
var theFiles = directory.GetFiles();
ImageRepeater.DataSource = theFiles;
ImageRepeater.DataBind();
var dataName = Request.QueryString["name"];
if (dataName != null) {
fullSizeImage.ImageUrl = "Images/" + dataName;
}
}
protected void UploadButton_Click1(object sender, EventArgs e) {
if (Page.IsValid) {
if (ImageUpload.HasFile) {
var content = ImageUpload.FileContent;
var name = ImageUpload.FileName;
var image = Gallery.SaveImage(content, name);
fullSizeImage.ImageUrl = "Images/" + image;
}
}
}
Отлично, работает как шарм! Благодаря! – holyredbeard