Выполняется код функции из Java скрипта
На моем веб-сайте у меня есть следующее asp.net код:
<div id="FileBrowserDiv" runat="server" class="FileBrowserDiv" > <asp:Button ID="UpLoadFile" runat="server" Text="File Selection" CssClass="FileSelection" OnClick="fireFileClick()" /> <asp:FileUpload ID="UpLoadButton" runat="server" cssclass="FakeButton" /> <script type="text/javascript"> function fireFileClick() { var objfile = document.getElementById("<%= UpLoadButton.ClientID %>"); objfile.click(); var objTextBox = document.getElementById("<%= UpLoadButton.ClientID %>"); objTextBox.value = objfile.value; </script> <div id ="filelabeldiv" runat="server" class="FileLabelDiv"> <asp:Label ID="FileLabel" runat="server" CssClass="FileLabel" /> </div> <asp:Button ID="FileSave" runat="server" Text="Save File" CssClass="FileSave" /> </div>
И в моем коде позади меня есть функция:
Public Function UpLoadBtn_change() If IsPostBack Then If UpLoadButton.HasFile Then ....Some code manipulating the Uploaded file.... End If End If End Function
То, что я пытаюсь сделать здесь, это:
Нажав на кнопку
UpLoadFileКнопка, которую я хочу вызвать
asp:FileUploadКнопка.
Для этого я управляю компанией
fireFileClick()в Java-скрипте.
В `ie explorer` эта ситуация работает хорошо.
Но в других браузерах это не работает, когда я пытаюсь запустить код позади функции.
Очевидно, что что-то не так с этим кодом, но я не могу понять, где эта ошибка находится.
И причина этого в том, что я не программист на Java, на самом деле у меня нет специальных знаний, которые мне нужны.
Есть ли кто-нибудь, кто мог бы помочь мне в этом вопросе?
Что я уже пробовал:
То, что я обнаружил до сих пор, это то, что:
Когда я нажимаю первую кнопку
<asp:Button ID="UpLoadFile" runat="server" Text="File Selection" CssClass="FileSelection" OnClick="fireFileClick()" />
Он запускает сценарий
var objfile = document.getElementById("<%= UpLoadButton.ClientID %>"); objfile.click();
Который нажимает на следующую (скрытую) кнопку. Это действие дает мне возможность выбрать правильный файл для загрузки.
Этот файл присваивается (с помощью второй строки скрипта)
var objTextBox = document.getElementById("<%= UpLoadButton.ClientID %>"); objTextBox.value = objfile.value;
В кнопку " fileupload` (скрытая). Таким образом, этот файл он запускает postback автоматически и дает мне необходимую информацию.
ВАЖНЫЙ Будьте внимательны в последовательности действий это очень важно важный.
Это происходит только в " ie explorer`.
В других браузерах действие post back срабатывает до того, как кнопка "fileupload"принимает свое значение, таким образом, возвращает мне результат "нет выбранного файла".
И вот в чем моя проблема.
Каково же может быть решение этой проблемы?
F-ES Sitecore
Ваш javascript не вызывает ваш кодовый метод UpLoadBtn_change. Сначала запускается весь ваш .net-код (поэтому ваш метод UpLoadBtn_change будет запущен при загрузке страницы), а полученный html-код отправляется клиенту для обработки. javascript полностью работает в браузере, поэтому просмотрите исходный код страницы, и вы увидите;
тревога(" ");
Таким образом, ваш javascript просто показывает пустое предупреждение, а не запускает ваш серверный код. Если вы ищете в google "asynch file upload asp.net" вы, вероятно, найдете код, который похож на то, что вы, вероятно, хотите достичь.
Prifti Constantine
Вы всегда можете использовать __DoPostBack("идентификатор вашего элемента управления","событие, которое вы хотите вызвать")
Для получения дополнительной информации вы всегда можете проверить документацию javascript __DoPostback . Я думаю, что это ваше решение. Для получения дополнительной информации не стесняйтесь спрашивать.
Lefteris Gkinis
Я уже пробовал это в своем сценарии
пусть HFile = Boolean;
HFile = document.getElementById("<%=UpLoadButton.HasFile %>");
И документ.getElementById("<%=UpLoadButton.HasFile%>");
содержит значение `True`.
Но это значение не возвращается в логическую переменную "HFile", а вместо этого выдает мне значение "null".
Почему так случилось?
Prifti Constantine
Во-первых, то, что вы делаете, заключается в том, что вы пытаетесь получить элемент по идентификатору, но в параметре вы передаете что-то еще... Поскольку вы знаете идентификатор элемента, то вам следует сделать следующее:
var UploadElement = document.getElementById("<%= UpLoadButton.ClientID%>");
Теперь у вас есть элемент, который вы хотите... Если вы хотите получить значение, то все, что вам нужно сделать, это :
ВАР UploadValue = UploadElement.значение;