Я работаю над галереей изображений, куда пользователь может загружать изображения.Загруженное изображение преобразуется в миниатюру и помещается в определенную папку для миниатюр, а исходное изображение помещается в папку для полноразмерных изображений.
В методе Page_Load в коде позади я получаю эскизы изпапку и свяжите их с Repeater, который я использую, что означает, что все изображения в этой папке отображаются при загрузке страницы.
Когда пользователь выбирает загрузить изображение, вызывается функция UploadButton_Click,файл обрабатывается, а затем отображается в полном размере.Все работает хорошо, примите, что миниатюра загруженного изображения не отображается сразу после загрузки.Чтобы показать это, вы должны перезагрузить страницу, чтобы Page_Load загрузился снова.
Конечно, восточный способ решения этой проблемы - поместить код для извлечения миниатюр и привязки элемента управления Repeater даже в функции UploadButton_Click., но это СУХОЙ, что мне не нравится.
Есть ли лучший, более элегантный способ решения этой проблемы?
код позади:
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;
}
}
}