#c# #javascript #asp.net
#c# #javascript #asp.net
Вопрос:
Мне нужно использовать переменную JS для запроса определенного элемента из массива, который хранится в модели. Как это сделать?
Вот пример кода:
function CreateCategoryList()
{
var limit = @(Model.CategoriesCount.ToString());
for (i=0; i<limit; i )
{
var category = '<div class="CategoryItem">' '@(Model.CategoryList[i].Name.ToString())' '</div>';
$("#CategoriesPopup").append(category);
}
alert($(".CategoryItem:first").text());
}
Мне нужно получить доступ к i-му элементу в модели.Список категорий, использующий переменную i в цикле for.
Комментарии:
1. Пожалуйста, уточните свой вопрос…
Ответ №1:
Razor не выполняется на стороне клиента, поэтому приведенный выше пример кода недействителен.
Самое простое решение — сохранить весь массив в виде переменной Javascript на стороне клиента, используя сериализацию. Я использовал Json.NET в примере ниже.
Я бы посоветовал вам изучить, что выполняется на сервере, а что — на стороне клиента. Это поможет вашему пониманию при написании представлений.
function CreateCategoryList()
{
var limit = @(Model.CategoriesCount.ToString());
var clientSideArray = JSON.parse('@(JsonConvert.SerializeObject(Model.CategoryList))');
for (i=0; i<limit; i )
{
var category = '<div class="CategoryItem">' clientSideArray[i] '</div>';
$("#CategoriesPopup").append(category);
}
alert($(".CategoryItem:first").text());
}
Комментарии:
1. Спасибо. Я думаю, это именно то, что мне нужно. Но есть одна проблема. Строка
var clientSideArray = JSON.Parse('@(JsonConvert.SerializeObject(Model.CategoryList))');
делает мой код неисполнимым. Я вижу в консоли ошибку «Uncaught TypeError: неопределенный не является функцией». Как это исправить?2. Извините, это будет на
JSON.Parse
. это должно бытьJSON.parse
в нижнем регистреp
. Обратите внимание, что для использованияJSON.parse
в старых браузерах вам необходимо включить библиотеку (такую как json2.js )3. Это не решило всю проблему. Теперь я получаю ошибку «Неожиданный токен amp;». Я также заметил, что строка для разбора содержит amp;quot вместо обычных quot («»). Может быть, мне следует предотвратить преобразование » -> amp;quot. Но как?
4. Решается самостоятельно. Требуется использовать @Html.Raw(JsonConvert.SerializeObject(Модель. Список категорий )).