Lefteris Gkinis Ответов: 1

Неопределенная процедура в коде позади


У меня в кармане две пуговицы. ASP.NET страница.
<asp:Button ID="UpLoadFile" runat="server" Text="File Selection" CssClass="FileSelection" OnClientClick="fireFileClick()"/>
<asp:FileUpload ID="UpLoadButton" runat="server" cssclass="FakeButton" OnChange="UpLoadBtn"/>

Одна из них-обычная кнопка, а другая-кнопка "загрузка файла". Это используется для того, чтобы получить возможность изменить имя кнопки, которую я использую.
Конечно, у меня есть и "скрипт" для того, чтобы запустить событие "click` в кнопке" FileUpload` :
function fireFileClick() {
    var objfile = Object;
    objfile = document.getElementById("");
    objfile.click();
}                       }

Этот скрипт работает просто отлично, запускает кнопку "FileUpload" и дает возможность выбрать мой готовый файл для загрузки.
Теперь пришло время для того, чтобы нажать кнопку "FileUpload", и это делается путем кэширования события "OnChange". И это действие сделало его совершенным.
Как вы можете видеть в моей предыдущей ссылке я отправляю это действие события в a Публичный Общий Доступ процедура:
Public Shared Sub UpLoadBtn(sender As Object, e As EventArgs)

Здесь выбрасывается ошибка:
Unhandled exception at line 115, column 119 in http://localhost:50761/Pages/Production.aspx
0x800a1391 - JavaScript runtime error: 'UpLoadBtn' is undefined


В этой ошибке я вижу, что
/Pages/Production.aspx
несколько раз это так
/Account/UsersHandler.aspx


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

Что я уже пробовал:

Я ищу все вокруг этой проблемы, но я не нашел ничего, связанного с этим.
Может быть, и не повезет.
Есть ли кто-нибудь, кто поможет мне в этом?

1 Ответов

Рейтинг:
1

Vincent Maverick Durano

Вы не можете вызвать свой открытый метод на стороне сервера в вашем onchanged событие непосредственно, так как ваш клиент(HTML) не знает о вашем публичном методе. Один из вариантов - использовать AJAX с PageMethod к этому. Вот вам пример: https://www.aspsnippets.com/Articles/Calling-ASPNet-AJAX-PageMethods-using-ScriptManager-Example.aspx[^]


Lefteris Gkinis

Я сделал его таким, каким вы меня видели... как это:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<div id="FileBrowserDiv" runat="server"  class="FileBrowserDiv" >
<asp:Button ID="UpLoadFile" runat="server" Text="File Selection" CssClass="FileSelection" OnClientClick="fireFileClick()"/>
<script type="text/javascript">
	    function fireFileClick() {
	      var objfile = Object;
	      objfile = document.getElementById("<%= UpLoadButton.ClientID %>");
objfile.click();
}
</script>
<asp:FileUpload ID="UpLoadButton" runat="server" onchange="runasub()" cssclass="FakeButton" />
<script type="text/javascript">
 	function runasub() {
PageMethods.ControlHasFile.document.getElementById("<%=UpLoadButton.ClientID%>").value;
}
</script> 


Но это приводит меня к ошибке:
Необработанное исключение в строке 159, колонка 9 внутри http://localhost:50761/Account/UsersHandler.aspx
0x800a1391 - JavaScript runtime error: 'PageMethods' не определен


"ControlHasFile" - это "Public Shared Sub", который находится в коде позади.
И с помощью этой субмарины я хочу обработать файл, который я выберу.

Vincent Maverick Durano

Вам нужно украсить свой серверный метод с помощью WebMethod атрибут.