Вызовите нестатический метод на стороне сервера с клиентской стороны с помощью JavsScript

Как вызвать нестатический метод на стороне сервера (aspx.cs) с клиентской стороны с помощью javascript (aspx) ….?

Насколько я знаю, я могу вызвать статический метод на стороне сервера с клиентской стороны …

сторона сервера:

[WebMethod] public static void method1() { } 

сторона клиента:

   function keyUP() { PageMethods.method1(); }    

Оно работает. Теперь как я могу назвать нестатический метод с клиентской стороны?

    Вы можете избежать статического ограничения, используя простую страницу .asmx вместо страницы codebehind.

    1) Откройте новый веб-сайт, используя шаблон AJAX Enable ASP.NET (он помещает необходимые ссылки в web.config)

    2) SIMPLESERVICE.ASMX – добавьте новый веб-сервис .asmx (я назвал my SimpleService.asmx) Обратите внимание на украшение [System.Web.Script.Services.ScriptSerive] и что class SimpleService реализует Webservice.

     <%@ WebService Language="C#" Class="SimpleService" %> using System; using System.Web.Services; [System.Web.Script.Services.ScriptService] public class SimpleService : WebService { [WebMethod] public string GetMessage(string name) { return "Hello " + name + ", the time here is: " + DateTime.Now.ToShortTimeString(); } } 

    3) DEFAULT.ASPX. Чтобы использовать его, обратитесь к службе в диспетчере сценариев, и вы выключены и запущены. В моем Javascript я вызываю class.method – SimpleService.GetMessage.

     <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>    Untitled Page    

    Hello World Example

    Enter Name: Call Server

    Я использовал пример, который я нашел у Scott Gu Found Here.

    Нет, вы не можете вызывать нестатические методы с клиентской стороны как таковой. Я пробовал один раз, но он уродливый (также я использовал jQuery ajax). Просто вызовите страницу с помощью ajax с именем метода, добавленным к нему в качестве параметра строки запроса, а затем на стороне сервера проверьте параметр и вызовите соответствующий метод. Но, как я уже сказал, это довольно уродливо 🙁

     $.ajax({'/mypage.aspx?m=mymethod',......}); //this is not correct syntax 

    на стороне сервера:

     protected void Page_Load(object sender, EventArgs e) { if(!Request.QueryString.HasKeys() || string.IsNullOrEmpty(Request.QueryString["m"])) { //return error or something relevant to your code } var m = Request.QueryString["m"]; switch(m) { case "a": a(); break; ..... ..... } } 

    C #

     public string LoadString() { return "my string"; } 

    JS / JQuery

     $('#txt').val(<%= LoadString() %>); 

    На самом деле, вы не можете вызвать нестатические методы таким образом.

    Когда вы вызываете PageMethod, вы в основном вызываете специальный веб-сервис. Эта функция работает только со статическими методами на одной странице.

    как ответ на Pramulia, я думаю, что вы хотите иметь функцию с аргументом с клиентской стороны, которая реализована в примере -> CallServer (arg1, arg2)

     <%@ Page Language="C#" AutoEventWireup="true" %> <%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>    Client Callbacks     

    Client Callbacks Without Postbacks


    В конце концов я использовал скрытые поля, если кто-нибудь это прочитает. Я могу установить значение в c # под функцией, а затем прочитать его в javascript.

    Если вы хотите вызвать его с использованием той же функции, вы можете использовать следующий код:

     [WebMethod] public static void method1() { ClassOfNonStaticFunction obj = new ClassOfNonStaticFunction(); obj.yourFunctionName(ParametersIfAny); } 

    Дэйв подробно написал о вызовах методов страницы с клиентской стороны, используя jquery ajax. Общая идея такова (если вы обнаружите какую-либо проблему, обратитесь к сайту Дейва).

    Код C #:

     [WebMethod] public static string yourmethod(/*params*/) { return "Hello World!" } 

    ASPX:

     $.ajax({ type: 'POST', data: /*Your Data*/, dataType: 'JSON', contentType: 'application/json', url: '/yourpage.aspx/yourmethod',//Method to call success: function(result, status) { //handle return data }, error: function(xhr, status, error) { //handle error } }); 
    Interesting Posts

    Есть ли хороший учебник для внедрения приложения iPhone дополненной реальности?

    Результаты поиска в Windows 10 отображаются не на том языке

    Переадресация портов не работает в DSL-маршрутизаторе

    Безопасно избавиться от «У вас новая почта в / var / mail» на Mac?

    Вызовите метод controllerа с другого controllerа, используя ‘scope’ в AngularJS

    Java: JPanel не масштабируется

    Подсчет количества элементов со значениями x в векторе

    Объедините несколько изображений по горизонтали с Python

    Excel Interop – эффективность и производительность

    Я получаю исключение NullPointerException, когда я использую ACTION_IMAGE_CAPTURE, чтобы сделать снимок

    Разрешить сетевой трафик только для определенных программ в Windows 7

    Parse CSV с двойной цитатой в некоторых случаях

    JTable с JPopupMenu

    Не удается войти в новые учетные записи – «Служба профилей пользователей не смогла войти в систему. Пользовательский профиль нельзя загрузить "

    Получение формулы другой ячейки в целевой ячейке

    Давайте будем гением компьютера.