Как получить доступ к обновленному значению сеанса внутри asp. net webmethod - PullRequest
0 голосов
/ 04 мая 2020

У меня есть таблица, которая содержит 2 выпадающих. Вы можете предположить, что родитель и ребенок. Также у меня есть веб-метод для фильтрации дочерних выпадающих опций в соответствии с родительским значением. Все собранные входы у меня есть событие нажатия кнопки, которое делает сервисный вызов. Если служба выдает ошибку, для моего дочернего раскрывающегося значения устанавливается значение «000» в функции jquery. Чтобы предотвратить это, я назначаю значение сеанса ErrorOccured. Если есть ошибка, я устанавливаю ее значение true, иначе false. Теперь, если я получаю ошибку при вызове службы, значение раскрывающегося дочернего элемента остается тем же. Но мое значение ErrorOccured всегда верно. Я не мог изменить его значение, потому что page_load не происходило при совершении вызова ajax. Таким образом, если из родительского раскрывающегося списка выбран другой параметр, я не могу установить значение дочернего раскрывающегося списка в «000». Как я могу решить его?

function filterTutarAlani(id, obj) {

            var element = getCell("parentDropdown");
            var dropdownValue = $('#' + element.id + ' option:selected').val().trim();
            $.ajax({
            type: "POST",
            url: '<%=ResolveUrl("test.aspx")%>' + '/ParentDropdownSelectedIndexChanged',
                data: JSON.stringify({ value: dropdownValue}),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            asyn: false,
            success: function (status) {
                changeStatus = status.d;
                var drpChild= getCell("childDropdown");
                var selectedTutarAlani = $('#' + drpChild.id + ' option:selected').val().trim();
                var selectList = getSelector(drpChild, "parentDropdown");
                for (var i = selectList.options.length - 1 ; i > 0 ; i--) {
                    selectList.remove(i);
                }
                var errorOccured = false;
                for (var i = 0; i < status.d.length ; i++) {
                    var option = document.createElement("option");
                    option.value = status.d[i].Name;
                    errorOccured = status.d[i].Error;
                    selectList.appendChild(option);
                }
                if (errorOccured == true) {
                    selectList.value = selectedTutarAlani;
                }
                else {
                    selectList.value = "000";
                }
            }
            });

        [WebMethod(EnableSession = true)]
        public static List<TestValues> ParentDropdownSelectedIndexChanged(string value)
        {
            var amounts = new List<TestValues>();

            amounts = HttpContext.Current.Session["ChildValues"] as List<TestValues>;
            var error= (bool) HttpContext.Current.Session["ErrorOccured"];
            amounts .Select(c => { c.Error= error; return c; }).ToList();

            return amounts;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...