Действительно ли возможно назвать ASP.NET codebehind функцией от JavaScript.
да, вы можете создать веб-метод, например ..
<WebMethod(EnableSession:=True), ScriptMethod()> _
Public Shared Function updateContent() As String
Return "Your String"
End Function
, а затем вызывать в JavaScript, например ..
PageMethods.updateTabContent(parameterValueIfAny, onSuccessMethod,onFailMethod);
, это также необходимо добавить
<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
Нет, невозможно напрямую вызвать код ASP.NET за функцией из Javascript. Код ASP.NET выполняется на сервере в контексте рабочего процесса ASP.NET. Javascript выполняется на клиенте в контексте браузера клиента.
Единственный способ, которым Javascript мог запустить выполнение кода ASP.NET, - это сделать вызов AJAX из Javascript на сервер.
Вы можете использовать __ doPostBack
для обратной передачи из javascript. Просто добавьте серверный элемент управления со свойством AutoPostBack и установите для него значение true.
Я бы предпочел подход Мухаммада Ахтара PageMethod. Одно короткое замечание: вам не нужен менеджер сценариев. Менеджер сценариев генерирует для вас только методы прокси javascript. Если у вас уже есть JQuery на вашей странице, вы можете забыть о диспетчере сценариев и вместо этого написать что-то вроде этого на своей странице:
<script type ="text/javascript">
$(document).ready(function() {
$("#AjaxLink").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "YourPage.aspx/updateContent",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
$("#content").html(result.d);
}
});
});
});
</script>
это предполагает, что у вас есть ссылка с идентификатором AjaxLink на вашей странице, а также div с идентификатором контент, показывающий результат. Преимущество заключается в том, что вы экономите 30 КБ JavaScript по сравнению между jquery и внедренными скриптами, созданными диспетчером сценариев