2015-08-13 2 views
0

Я работаю с универсальными приложениями в Visual Studio 2015 с нескольких дней, и я совершенно не понимаю, как получить доступ к методу C# в классе, поскольку нет «атрибута WebMethod» -Attribute.Универсальные приложения: вызов метода C# из javascript

<script type="text/javascript"> 
    function getWindowsDeviceUUID() { 
     //$.ui.popup({ 
     // title: "methodcall", 
     // message: "trying to call methode" 
     //} 
     // ); 
     $.ajax({ 
      type: 'POST', 
      url: 'MainPage.xaml.cs/GetDeviceUUID', 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (uuid) { 
       $.ui.popup({ 
        title: "success", 
        message: "called method" 
       } 
        ); 
       return uuid; 
      } 
     }); 
    }; 
</script> 

Я уже пробовал с AJAX, но -метод «GetDeviceUUID» не называется. Однако getWindowsDeviceUUID.

Дополнительная информация: У меня уже есть несколько JS & HTML-файлы, которые я должен использовать в этом приложении. Я открываю HTML-сайты через элемент управления WebView.

С уважением

ответ

1

Предполагая, что ваше хост-приложение является C# (и ваш HTML-код размещен в WebView), вы можете открыть методы C#, вызвав AddWebAllowedObject method, чтобы ввести класс C#, который включает метод, который вы хотите вызвать. Затем из скрипта вы можете вызвать метод через window.whatever-name-you-gave-it.some-method().

+0

Когда я добавляю объект и отлаживаю код Javascirpt, объект остается неопределенным и исключение вызывается из-за вызова метода неопределенного объекта. – M4s0n

+0

Для получения дополнительной информации см. http://stackoverflow.com/questions/32052364/c-sharp-class-attributes-not-accessible-in-javascript. – M4s0n

+1

, пожалуйста, обновите свой ответ, потому что объект вызывается через 'window.whatever-name-you-given-it.some-method()' – M4s0n

0

Думаю, вам просто нужно изменить логику. Вместо того, чтобы напрямую обращаться к классу, напишите функцию, которая имеет доступ к классу в вашем коде, а затем использовала WebMethod для вашей функции для использования этого класса. Если класс недоступен даже в коде позади, тогда класс необходимо изменить.

+0

Проблема заключается в отсутствии атрибута, такого как WebMethod, поскольку Universal Apps не использует .Net Framework, но .Net Core – M4s0n

Смежные вопросы