2015-08-24 7 views
1

У меня есть файл с именем Upload, который используется для загрузки изображений. Затем другие файлы вызывают этот файл загрузки. Проблема в том, что мне нужно знать, какая кнопка загрузки была нажата, потому что одна кнопка должна сохранять изображения в другом файле пути, чем другие кнопки загрузки. Я попытался создать сеанс, но сеанс создавался каждый раз, когда страница была загружена, так что это не сработает. Код, который обрабатывает загрузку, находится в iframe. Когда я нажимаю кнопку загрузки, появляется iframe, который дает возможность выбрать файл с вашего компьютера и загрузить его. Мне нужно передать значение из функции ShowUploadImage() в iframe, чтобы я знал, какая кнопка загрузки была нажата.Как узнать, была ли нажата кнопка на другой странице?

Это код под кнопкой загрузки:

function ShowUploadImage() { 
     $('#dvAddEditImage').fadeIn(300); 
     $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />"); 
     $("#dvAddImage").fadeIn(300); 
     $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx'></iframe>"); 
     Session["Session"] = "Upload"; 
    } 

Я добавил сессию в Page_Load. Но теперь сеанс создается каждый раз, когда это не то, что мне нужно.

protected void Page_Load(object sender, EventArgs e) 
    { 
      Session["Session"] = "Upload"; 
     } 

    } 

Затем в публикации файла мне нужно проверить, какая кнопка была нажата:

if (fuUpload.HasFile) 
      { 
       string JobType = Convert.ToString(Session["Session"]); 
       Session["Session"] = null; 
       if (JobType == "Upload") 
       { 

       } 
       else 
       { 

       } 
      } 

Может быть, с помощью сеанса не правильный способ сделать это? Как передать значение между различными файлами кода?

EDIT

Ok добавили скрытое поле:

<asp:HiddenField ID="hfSession" runat="server" Value="Upload" /> 

И добавил к кнопке загрузки:

function ShowUploadImage() { 
     $('#dvAddEditImage').fadeIn(300); 
     $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />"); 
     $("#dvAddImage").fadeIn(300); 
     $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx'></iframe>"); 
     document.getElementById('<%= hfSession.ClientID %>').value = "Upload"; 
    } 

Так как я называю это скрытое поле в другой странице файл. Эти 2 файла не имеют связи, так как будет передано значение скрытого поля?

+0

Почему вы не отправляете параметр на эту страницу загрузки с нужной дорогой? Например, создайте свой iframe следующим образом: 'iframe id = \" iframeUpload \ "src = 'utilities/UploadPOD.aspx? TargetPath = X'>', а затем сгенерируйте поле 'hidden' с этим параметром ... – DontVoteMeDown

+0

" session создавался каждый раз, когда страница была загружена, так что это не сработает.«Это не должно быть Также есть много способов передать триггер. Например, кеш, куки и передача его в качестве параметра между страницами .... – JaredT

+0

@DontVoteMeDown UploadPOD.aspx - это целевой путь. Другие кнопки загрузки используют один и тот же путь Мне нужен способ проверить, какая кнопка загрузки была нажата. – user123456789

ответ

2

Добавить что-то к URL в IFRAME, но сделать это различно для каждого из кнопок ...

function ShowUploadImage() { 
    $('#dvAddEditImage').fadeIn(300); 
    $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />"); 
    $("#dvAddImage").fadeIn(300); 
    $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx?id=upload1'></iframe>"); 
} 

Затем в серверном коде, проверьте значение, переданное в строке запроса ...

if (Request.QueryString["id"] == "upload1") 
{ 
    // do something here 
} 

Сделайте то же самое для другой кнопки, но передайте другое значение в строке запроса.

+0

спасибо, что это работает – user123456789

+0

Не беспокойтесь. Рад помочь :) – Archer

+0

Хороший ответ. @ user123456789 вот что я пытался сказать в комментарии;) – DontVoteMeDown

0

Если вы просто хотите передать значение кнопки, нажатой с одной страницы на другую, возможно, вы можете попробовать использовать sessionStorage в вашем методе ShowUploadImage(). установить значение в этом методе и получить то же самое в другой странице

что-то вроде этого

function ShowUploadImage() { 
    $('#dvAddEditImage').fadeIn(300); 
    $("#dvAddImage").html("<img src=\"images/loading.gif\" alt=\"Loading...\" title=\"Loading...\" />"); 
    $("#dvAddImage").fadeIn(300); 
    $("#dvAddImage").html("<iframe id=\"iframeUpload\" src='utilities/UploadPOD.aspx'></iframe>"); 

    sessionStorage.setItem("action", "Upload"); 
} 

, а затем на другой странице писать это везде, где вам нужно получить его в JavaScript

sessionStorage.getItem("action");