2015-03-07 3 views
0

На моей странице asp.net у меня есть элемент управления Image, в котором myimage.png будет отображаться при загрузке страницы. Требование, как показано ниже, Просмотрите изображение, используя элемент управления загрузкой файлов и нажав кнопку «Загрузить», немедленный просмотр необходимо отобразить в элементе управления изображением. Когда кнопка загрузки нажата после просмотра изображения, существующий «myimage.png» будет удален, и новое изображение будет сохранено в цепочке разметки с тем же именем, и предварительный просмотр должен отображаться в режиме управления изображением.Изменить адрес изображения при нажатии кнопки

Проблема. После сохранения изображения управление изображением не отображает новое изображение немедленно. Для просмотра страницы изображения необходимо перезагрузить. Код ниже, В ASPX странице

<asp:Image ID="imgLogo" style="margin-left: -299px;" ImageUrl="~/images/myimage.png" runat="server" /> 

код позади, как показано ниже,

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    string filePath = FileUpload1.PostedFile.FileName; 
    File.Delete(Server.MapPath(@"~\images\myimage.png")); 
    FileUpload1.SaveAs(Server.MapPath(@"~\images\myimage.png")); 
    imgLogo.ImageUrl = Server.MapPath(@"~\images\myimage.png"); 
} 

С уважением

ответ

0

Это похоже на проблему кэширования браузера.

URL-адрес такой же, как и до изменения файла изображения, поэтому кэш будет использовать файл с именованным именем (в кеше) для отображения.

Вы можете получить за это препятствие, добавляя что-то дополнительное (но не используется) в URL:

protected void btnUpload_Click(object sender, EventArgs e) 
{ 
    // Do your upload stuff here... 
    imgLogo.ImageUrl = "~/images/myimage.png?" + DateTime.Now; 
} 
0

Причина ваша страница должна быть перезагружена, потому что код ASP.NET выполняется на сервер. Поэтому каждый раз, когда вы, например, нажимаете кнопку с кодом на стороне сервера внутри, запрос отправляется на сервер, сервер выполняет ваш код и возвращает правильный ответ. В принципе: что-то ДОЛЖНО быть перезагружено. Тем не менее, это не обязательная страница. Вы можете заставить браузер перезагрузить только определенный фрагмент страницы с использованием расширений AJAX, таких как Менеджер сценариев и Панель обновления.

Пример (страницы ASPX):

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
      <ContentTemplate> 
       <asp:Label ID="Label1" runat="server" Text="Click the button."></asp:Label> 
       <br /> 
       <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Hello World" />  
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
    </form> 
</body> 
</html> 

OnClick событие:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = "Hello world!"; 
} 

Кроме того, вы можете заставить панель обновить его содержимое с помощью Update() метод UpdatePanel.

Смежные вопросы