У меня есть массив javascript, который массив извлекает из покоя. Я хочу заполнить этот результат массива в бритве foreach. Но я не смог достичь моего глобального массива в javascript. Как я могу это сделать?
Вот мой javascript;
function getAlarmModels(cb) {
$.ajax({
url: "SomeURL",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: failureCb,
success: successCb,
timeout: 60000
});
function failureCb(jqXHR, textStatus, errorThrown) {
var errorCode = jqXHR.status;
var errorText = textStatus;
console.log("Error Code [" + errorCode + "]: " + errorText);
if (cb)
cb(null);
}
function successCb(data) {
window.PreviousBill = JSON.parse(data);
if (cb)
cb(JSON.parse(data));
}
}
Вот бритва;
@for (int i = 0; i <window.PreviousBill.Count ; i++)
{
}
}
Как я могу получить доступ к "window.PreviousBill"?
Вы не можете использовать Razor для рендеринга данных, полученных через AJAX. Причина - жизненный цикл страницы:
1) Действие контроллера обрабатывает запрос и возвращает вид.
2) Просмотр визуализируется с помощью Razor на стороне сервера, полученный HTML-код доставляется клиенту.
3) Клиент получает HTML-код и выполняет любой встроенный JavaScript на стороне клиента. Сюда входят любые вызовы AJAX.
Как вы можете видеть, во время запуска вашего JS-кода любой синтаксис Razor был долго преобразован в HTML. С другой стороны, в то время, когда Razor отображает View, переменные JS пока недоступны.
Что ты можешь сделать: