#javascript #c# #jquery #asp.net #ajax
#javascript #c# #jquery #asp.net #ajax
Вопрос:
Я передаю значение в свою часть C # с помощью ajax и получаю ответ обратно. Но я не могу сохранить значение или использовать его в своем коде на C #. Дополнительная информация ниже:
Вызов Ajax: (gallery.aspx)
$.ajax({
url: Url, //assigned previously
data: 'call=ajaxamp;method=GetListamp;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»] в js-часть, но не сохраняет его для моего файла кода. Должно ли это быть что-то вроде ответа.Чтение или ответ.Сохранить или что-то в этомроде?
Кто-нибудь знает, что здесь происходит?
Комментарии:
1. Пожалуйста, уточните, что вы подразумеваете под файлом кода C #. Вы говорите о коде за файлом или о строке C # на странице Razor? Просто укажите use весь метод, из которого взят ваш фрагмент C #.
2. Да, это исходный код, но я всегда использую CodeFile=»myfile.aspx.cs» для @ tag вверху
3. Есть ли ваш код на C # в методе, и если это так, не могли бы вы, пожалуйста, обновить свой вопрос кодом, который окружает ваш фрагмент C #.
4. @Chris Я обновил свой вопрос. Дайте мне знать, должен ли я поделиться дополнительной информацией
5. Что это значит
Output on the page: Not Assigned!
. Когда вы видите этот результат?
Ответ №1:
Вы можете сохранить ответ ajax в скрытом поле, а затем получить доступ к значению этого скрытого поля в коде на стороне сервера.
<asp:HiddenField ID="HiddenField1" runat="server" />
$.ajax({
url: Url, //assigned previously
data: 'call=ajaxamp;method=GetListamp;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
Комментарии:
1. Проект вылетает при добавлении asp: HiddenField ошибка не указана
2. Можете ли вы уточнить, что это означает под сбоями проекта
3. При обновлении я получаю ошибку 301. Проект, в котором у меня есть ошибка 301, попадает в перенаправление и не регистрирует данные об ошибке
4. скрытое поле не должно иметь ничего общего с перенаправлением 301
5. Я знаю, но, как ни странно, я могу использовать asp: label или другие свойства asp: . Но когда я делаю тот же трюк с asp: label, это не работает
Ответ №2:
ОК. Оно никогда не будет присвоено так, как вы это сделали. Просто потому, что когда страница загружается и все элементы управления отображаются, вызовы ajax не учитывают жизненные циклы страницы. Из-за этого загрузка страницы filterType
не назначается.
Хотя у вас есть пара вариантов
- Используйте Ajax с панелью обновления и классом PageRequestManager
- Измените значение с помощью jQuery или Vanilla JS, используя
<%=filterType.ClientID%>
Если вам нужно только внешнее представление, вы можете использовать любой вариант. Если вам это нужно для дальнейшей серверной части, я боюсь, что вариант 1 подходит только вам.
Комментарии:
1. Но как получилось, что ответ работает правильно. Ответ. Запись работает нормально и записывает желаемый ответ обратно в js
2. Поскольку оно ответило на запрос Ajax, все элементы управления были установлены