Вызов JavaScript из Codebehind - PullRequest
       3

Вызов JavaScript из Codebehind

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

Я прочитал много разных ресурсов, но все еще не уверен, возможно ли это без использования AJAX.

У меня есть функция javascript, которая загружает div в модальное состояние и говорит «Загрузка, пожалуйста, подождите». Я назвал эту функцию loadingModal ()

function loadingModal(url)
{
     loadModal(...)
}

Что мне нужно сделать, это активировать только после того, как я проверил правильность пароля и имени пользователя на стороне сервера, поэтому:

btnSubmit_OnClick(object sender EventArgs e)
{
     string usr;
     string password;

     if (verify(usr, password))
     {
          ///// TRIGGER JAVASCRIPT HERE
          LOAD TONS OF SESSION VARIABLES
          .
          .
          .
      }
      else
         Show Error and Definitely Don't ever mention still loading
 }

Я знаю, что мог бы просто прикрепить вызов onclientclick к javascript, однако он загрузил бы модальный режим загрузки, даже если это были неверные имя пользователя и пароль

Могу ли я запускать javascript в середине исполнения со стороны сервера?

Ответы [ 3 ]

3 голосов
/ 16 сентября 2010

Могу ли я запускать JavaScript в середине исполнения со стороны сервера?

Нет.Код JavaScript оценивается на стороне клиента (в браузере), еще долго после того, как на стороне сервера закончится обработка запроса.Клиентские и серверные сценарии выполняются в разных местах и ​​в разное время.Такое прямое взаимодействие не может быть.

Вы можете использовать AJAX, если не хотите запускать полное обновление страницы.Когда вы используете AJAX, ваш клиент (браузер) отправит новый новый запрос на сервер.Сервер обрабатывает этот запрос (например, проверяет имя пользователя и пароль) и возвращает ответ (доступ запрещен или доступ предоставлен) обратно клиенту.Затем клиент должен обработать ответ соответствующим образом.

1 голос
/ 16 сентября 2010

Если вы имеете в виду add код JavaScript на странице, см. ScriptManager.RegisterStartupScript

0 голосов
/ 21 сентября 2011

Надеюсь, еще не поздно ...

Лучше всего добавить 2 asp: Panel: один с загрузочным GIF-файлом Ajax, который обычно виден до тех пор, пока страница не готова, а другой с style = "display: none "и asp: Метка на этой панели.

В выделенном коде, когда проверка имеет значение false, вы просто меняете стиль отображения: встроенный и задаете для текста метки все, что вам нужно.И, конечно, выйдите из sub без отображения вашей модальной штуковины!

Вот пример:

<asp:Panel ID="pnlError" runat="server" style="display:none; position:absolute; left:300; top:300; width:300;">
    <asp:Label ID="lblErr" runat="server" style=" color:Red;"></asp:Label>
</asp:Panel>

If validation = false Then
        lblErr.Text = "Wrong user name or password or whatever!..."
        pnlLoading.Style.Item("display") = "none"
        pnlError.Style.Item("display") = "inline"
        Exit Sub
End if

Таким образом, ваш пользователь увидит загрузочный gif, зная, что «что-то» находится в разделении, иесли не прав, его предупреждают.

...