Вызов ASP.NET кода позади функции из JavaScript - PullRequest
6 голосов
/ 26 марта 2010

Возможно ли вызвать функцию ASP.NET codebehind из JavaScript.

Ответы [ 6 ]

9 голосов
/ 26 марта 2010

Я бы предпочел подход Мухаммеда Ахтара 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 и внедренными сценариями с помощью менеджера сценариев

9 голосов
/ 26 марта 2010

да, вы можете сделать веб-метод как ..

<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>
3 голосов
/ 30 сентября 2012

функция CS

[System.Web.Services.WebMethod]
public static string set_single_amount(arg a1)
{
     return value;
}

в скрипте cs fucnction вызывая с помощью scriptmanager

$("#control").click(function()
{
  PageMethods.set_single_amount(value,afercalling)
});

function afercalling(result)
{
alert(result);
}
1 голос
/ 26 марта 2010

Нет, нельзя напрямую вызывать код ASP.NET для функции из Javascript. Код ASP.NET выполняется на сервере в контексте рабочего процесса ASP.NET. Javascript выполняется на клиенте в контексте браузера клиента.

Единственный способ, которым Javascript может инициировать выполнение кода ASP.NET, - это вызов AJAX из Javascript на сервер.

0 голосов
/ 15 сентября 2010

Если вы работаете над проектом без Ajax, вы можете попробовать System.Web.UI.ICallbackEventHandler.

Образцы здесь:

http://msdn.microsoft.com/en-us/library/ms178210.aspx

http://www.ajaxmatters.com/2006/05/using-icallbackeventhandler-in-asp-net/

0 голосов
/ 26 марта 2010

Вы можете использовать __doPostBack, чтобы сделать обратную передачу из javascript. Просто добавьте серверный элемент управления со свойством AutoPostBack и установите для него значение true.

См. Вызов __doPostBack в javascript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...