Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переменные, описываемые с помощью @ (https://javascript.ru/forum/misc/33837-peremennye-opisyvaemye-s-pomoshhyu-%40.html)

ruslan_mart 10.12.2012 20:33

Кстати, ф-ции и переменные с символом @ у меня почему-то никогда не работают, может в этом проблема?

Hoshinokoe 10.12.2012 20:35

Jack Sparrow,

Нельзя смешать Javascript (отрабатывает на клиенте) и ASP.NET (отрабатывает на сервере). На момент исполнения Javascript вместо серверной переменной стоит значение, т.е. вместо
var listLength = "@(Model.orderList.Count)";
в html-странице будет так
var listLength = "5";
Если нужно получить доступ на клиенте к модели, то необходимо модель сериализовать и передать на клиентскую часть.
Что-то вроде этого:
var model = @(Json(Model)); // должно преобразовать в вид {orderList: [{AddressStreet: "streeet1"},{...},{...},...]}

И дальше можно работать как с обычным объектом:
for(var i=0; i<model.orderList.length; i++)
{
   var street = model.orderList[i].AddressStreet;
   // и т.д.
}

Jack Sparrow 10.12.2012 20:59

Спасибо за ответ, но не получается преобразовать Model в тип Json, вот такая ошибка в редакторе:


Без кавычек пробовал, то же самое
Сейчас погуглю про конкретное преобразование в тип Json, если что-то найду, отпишусь

Jack Sparrow 10.12.2012 22:23

Странно, попробовал вот так
var model = "@Html.Raw(Json.Encode(Model))";

Но выдает ошибку
Экземпляр ObjectContext был удален и больше не может использоваться в операциях, требующих соединения.
именно на этой строке

Hoshinokoe 11.12.2012 01:06

Jack Sparrow,

1) кавычки не нужны, т.к. получится строка
2) попробуй преобразовать только orderList, остальные поля вроде тебе не нужны на клиенте

var orderList = @Html.Raw(Json.Encode(Model.orderList));

Jack Sparrow 12.12.2012 00:16

Привет, я попробовал поставить без кавычек, но редактор подчеркивает вот так

А когда запускаю, вылетает ошибка:

Jack Sparrow 22.12.2012 22:59

поднимаю снова тему, не могу никак решить проблему


Часовой пояс GMT +3, время: 08:06.