Вызов функции на стороне сервера .Net из клиентского JavaScript при использовании главной страницы - PullRequest
0 голосов
/ 25 октября 2019

У меня есть проект веб-сайта в .Net, и на определенной веб-странице я хочу использовать javascript (jquery / ajax) для выполнения простой обратной передачи после использования элемента управления палитрой цветов.

Яиспользуя EnablePageMethods=true и WebMethod в .Net для получения вызова, но он не срабатывает, и я не могу поймать его с точкой останова во время отладки.

Я использую мастер-страницу на веб-сайте, и я подозреваю, что она портит ответ.

Если я создаю чистый одностраничный тестовый проект с тем же кодом, он работает.

Я надеюсь, что кто-нибудь может помочь мне понять, в чем дело.

.Net-код в test.aspx.vb:

<Services.WebMethod(EnableSession:=True)>
Public Shared Function SaveColor2() As String
    Return "hi"
End Function

JavaScript в тесте.aspx:

function RunCode2() {
    $.ajax({
          type: "POST",
          url: "test.aspx/SaveColor2",
          success: function (result) {
            console.log(typeof (result)); //=string
            console.log('res='+JSON.stringify(result));
          },
          error: function (result) {
            console.log(typeof (result));
            console.log('Error=' + JSON.stringify(result));
          }
      });
  }

HTML:

<asp:ScriptManager runat="server" EnablePageMethods="true"></asp:ScriptManager>

<input type="color" id="favcolor" onchange="RunCode2();" value="#521252" />

Когда я запускаю тестовую страницу и щелкаю элемент управления палитрой цветов, я могу выбрать цвет и нажать кнопку «ОК». На данный момент я ожидаю возвращаемую строку со значением «привет». Однако возвращается следующее (при просмотре с помощью консоли отладки браузера):

res="\r\n\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n<head><meta charset=\"utf-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>\r\n\tProjekter - Service Tool\r\n</title><script src=\"/Scripts/modernizr-2.8.3.js\"></script>\r\n<link href=\"/Content/bootstrap.css\" rel=\"stylesheet\"/>\r\n<link href=\"/Content/Site.css\" rel=\"stylesheet\"/>\r\n<link href=\"../favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" /></head>\r\n<body>\r\n    <form method=\"post\" action=\"./SaveColor2\" id=\"ctl01\">\r\n<div class=\"aspNetHidden\">\r\n<input type=\"hidden\" name=\"__EVENTTARGET\" id=\"__EVENTTARGET\" value=\"\" />\r\n<input type=\"hidden\" name=\"__EVENTARGUMENT\" id=\"__EVENTARGUMENT\" value=\"\" />\r\n<input type=\"hidden\" name=\"__LASTFOCUS\" id=\"__LASTFOCUS\" value=\"\" />\r\n<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"VQ3fGc48LqRx3LfWCkgUpQpWcYBgoEaVVDZJKrJ... 
[+206 KB of data]

Страница возвращается со статусом 200 и успешно обработана. Я просто запутался по поводу возвращаемых данных.

Ps. Я также попытался выполнить обратную передачу, используя прямой JavaScript, используя вызов функции PageMethods.SaveColor2 ();

...