Значение, переданное ajax из Javascript в C #, ответил, но не сохранен - PullRequest
1 голос
/ 29 марта 2019

Я передаю значение в свою часть C # с помощью ajax и получаю ответ обратно.Но я не могу сохранить значение или использовать его в своем коде C #.Дополнительная информация ниже:

Ajax Call: (gallery.aspx)

    $.ajax({
        url: Url, //assigned previously
        data: 'call=ajax&method=GetList&typeIds=' + typeIds.replace(",",""),
            type: 'POST',
            dataType: 'json',
            success: function (resp) {
                console.log("From AJAX: " + resp) // this works and shows the result

            },
             error: function (xhr, status) {
                console.log("Sorry, there was a problem!");
            }
    });

Код сзади (CodeFile) :( gallery.aspx.cs)

Обновление: Полный фрагмент кода C #

public partial class gallery : System.Web.UI.Page
{
        public List<string> images = new List<string>();    
        public List<string> imagesList = new List<string>();
        public List<string> filteredImagesList = new List<string>();
        public List<string> testList = new List<string>();
        protected string imagesName;
        protected string filterType;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["call"].ParseString() == "ajax")
            {
                Response.Write(Request["typeIds"].ParseString().TrimEnd(','), true, ResponseType.Json);
                filterType = Request["typeIds"].ParseString().TrimEnd(',');
            }
            else
            {
                filterType = "Not Assigned!";
            }
        }
}

Вывод на страницу: Не назначено! Значение <h1><%=filterType%></h1> в файле aspx возвращает оператор else из файла aspx.cs

Но я получаю ответ обратно в моем javascript, пока console.log("From AJAX: " + resp) показывает результат.

НО Я не могу использовать значение filtertype в моем кодовом файле c #.

Я не могу понять, почему Response.Write(Request["type"].ParseString().TrimEnd(','), true, ResponseType.Json); возвращает запрос ["type"], но не сохраняйте его для моего кодового файла.Должно ли это быть что-то вроде Response.Read или Response.Save или еще чего-нибудь?

Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

OK.Он никогда не будет назначен так, как вы это сделали.Просто потому, что когда страница загружается и все элементы управления отображаются, ajax-вызовы не учитываются Page Life Cycles .Из-за этого при загрузке страницы filterType не назначается.

Хотя у вас есть пара опций

  1. Использовать Ajax с панелью обновления и класс PageRequestManager
  2. Измените значение с помощью JQuery или Vanilla JS, используя <%=filterType.ClientID%>

Если вам нужно только внешнее представление, вы можете использовать любую из этих опций.Если вам это нужно для дальнейшей работы, я боюсь, что вариант 1 - единственный выбор для вас.

0 голосов
/ 29 марта 2019

Вы можете сохранить ответ ajax в скрытом поле, а затем получить доступ к этому значению скрытого поля в коде на стороне сервера.

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

$.ajax({
        url: Url, //assigned previously
        data: 'call=ajax&method=GetList&type=' + typeIds.replace(",",""),
            type: 'POST',
            dataType: 'json',
            success: function (resp) {
                console.log("From AJAX: " + resp) // this works and shows the result
                 $('#<%=HiddenField1.CliendId%>').val(resp);

            },
             error: function (xhr, status) {
                console.log("Sorry, there was a problem!");
            }
    });

Затем можно получить доступ к коду на стороне сервера, например:

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