Приглашение Javascript сохранено в переменную в C # с тем же нажатием кнопки - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь использовать Javascript, чтобы запросить переменную, которая затем передается в C #.Я прочитал несколько статей здесь о том, как наилучшим способом сделать это является скрытое поле и получение значения.Это прекрасно работает индивидуально, но передается в методе C # (я также читаю здесь ), что я могу запустить функцию JS и метод C # для одного и того же события щелчка.Опять же, это прекрасно работает, когда у меня есть их отдельно, но значение всегда "", когда сделано вместе.Вот мой код.

Javascript:

function ScheduleName() {
        var inputName = prompt("Schedule name");
        if (inputName.length === 0) {
            alert("Please enter a name.");
            return false;
        }
        document.getElementById('<%=sptext.ClientID %>').innerHTML = inputName;
    }

<asp:Button ID="btnSaveSchedule" OnCLientClick="ScheduleName(); return false;" onclick="btnSaveSchedule_Click" class="btn btn-info" runat="server" Text="Save Schedule"/>

<span id="sptext" runat="server" visible="False"></span>

C #

 protected void btnSaveSchedule_Click(object sender, EventArgs eventArgs)
{
   string scheduleName = sptext.InnerHtml;
}

Это, по крайней мере, важные части кода.Я пытался вызвать методы C # в Javascript (function JSFunction() { <%#ProjectName.Csharp.CsharpFunction()%> ; }

Я также пробовал AJAX. Я сталкиваюсь с некоторыми проблемами, когда мои методы не являются статичными. Возможно, у меня простотрудное время или я действительно не понимаю чего-то фундаментального. Я программировал на Javascript в течение многих лет, но довольно плохо знаком с C #. Спасибо.

1 Ответ

0 голосов
/ 18 сентября 2018

Вы уже в пути.

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

<asp:HiddenField runat="server" ID="sptext" />

В вашем JavaScript установите value этого HiddenField.

function ScheduleName() {
    var inputName = prompt("Schedule name", "");
    if (inputName.length === 0) {
        alert("Please enter a name.");
        return false;
    }
    document.getElementById('<%=sptext.ClientID %>').value = inputName;
    return true;
}

Обязательно верните True или False через Buttonобработчик OnCLientClick в зависимости от того, был ли данный ввод корректным;используйте возвращаемое значение вашего клиентского скрипта.Обратная передача будет происходить только в том случае, если этот скрипт вернет True.

<asp:Button ID="btnSaveSchedule" OnCLientClick="return ScheduleName();" onclick="btnSaveSchedule_Click" class="btn btn-info" runat="server" Text="Save Schedule"/>

. На сервере прочитайте значение HiddenField.

 protected void btnSaveSchedule_Click(object sender, EventArgs eventArgs)
 {
     string scheduleName = sptext.Value;
 }
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...