0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
||||||||||||||||
1 | ||||||||||||||||
Как передать параметр javascript контроллеру и обратно09.01.2015, 17:07. Показов 10362. Ответов 21
Метки нет (Все метки)
Только начал изучать asp.net. Пытаюсь сделать простейшую вещь:
Хочу определить объект javascript:
P.S.: Интересует непосредственно работа с объектами javascript. То есть не добавлять значения value в скрытые input (ведь если наш объект куда сложнее будет, это уже не вариант)
0
|
09.01.2015, 17:07 | |
Ответы с готовыми решениями:
21
Как передать параметр из jsp java страницы в функцию javascript и возвратить обратно другой параметр Как передать данные JavaScript в GET параметр PHP? Передать результат работы JavaScript в Java и обратно Передать параметр функции javascript в формате Json |
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
09.01.2015, 17:30 | 2 |
ничего другого не придумали пока. Но вы можете придумать..
Создаётся скрытое поле, с которым вы работаете на js, оно же потом передаётся при постбеке
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|
09.01.2015, 17:34 [ТС] | 3 |
То есть по сути придется парсить объект?
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
||||||
09.01.2015, 17:37 | 4 | |||||
весь парсинг сводится к одной строке кода:
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|
09.01.2015, 17:39 [ТС] | 5 |
ну это если передается одно значение, а если там целый объект? Например массив? Или я чего-то не до понимаю? И это в одну сторону, а в другую как прочитать из этого объекта, не подскажите?)
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
||||||
09.01.2015, 17:47 | 6 | |||||
Сообщение было отмечено Siend Ilu как решение
Решение
да, не понимаете.
Любой сложный объект, который вы передадите в hidden input будет сериализован в json-строку. Чтобы на js получить этот объект вызывается parse() Чтобы обратно сериализовать объект на js вызывается
1
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|||||||||||
09.01.2015, 18:40 [ТС] | 7 | ||||||||||
Спасибо, стало понятнее, буду пробовать)
Добавлено через 34 минуты Попытался, но что-то у меня с парсингом не то( Вот мой контроллер:
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
09.01.2015, 18:58 | 8 |
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|||||||||||||||||||||
09.01.2015, 19:14 [ТС] | 9 | ||||||||||||||||||||
если выводить document.getElementById("test"),то выводит System.Int32[]
А в самом test походу ничего, так как скрипт прерывается ошибкой SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data Добавлено через 4 минуты Судя по всему я что-то не так делаю <input id="test" type="hidden" value="System.Int32[]" /> Так в браузере выглядит мой инпут. Во вью я его задавал след образом: <input id="test" type="hidden" value="@ViewBag.Result" /> Судя по всему я просто преобразовал ViewBag.Result к строковому значению, потому и получаю в итоге тип. А как передать все же массив? Добавлено через 8 минут Так, я попробовал сделать так:
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
||||||
09.01.2015, 19:19 | 10 | |||||
Siend Ilu,
вот так попробуйте:
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|
09.01.2015, 19:22 [ТС] | 11 |
Тоже не помогает. Говорит что JSON не существует в данном контексте, ну как если бы не было директивы на сборку. А его вообще можно использовать то в c#? или только в коде javascript?
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
09.01.2015, 19:30 | 12 |
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
||||||||||||||||||||||||||||||||||||
09.01.2015, 19:42 [ТС] | 13 | |||||||||||||||||||||||||||||||||||
В контролере:
Подключил:
Во view:
Соответственно дальше скрипт снова падает на
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data Если изменит на
ReferenceError: Json is not defined Я так понимаю что все же вот тут:
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
||||||
09.01.2015, 20:56 | 14 | |||||
Siend Ilu, в общем, так сделайте в контроллере:
1
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|||||||||||
09.01.2015, 21:10 [ТС] | 15 | ||||||||||
YES!!! Это сработало, смог в javascript'e получить свою переменную. А как теперь в обратную сторону отправить?
Вот что я делаю:
Контроллер на пост запрос пока выглядет так:
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
09.01.2015, 21:32 | 16 |
ViewBag вам никак не вернётся.
Вам нужно в пост методе добавить входной строковый параметр такого же имени как и name (не id, а name) у input'a. После чего эту строку вы сможете десериализовать в объект JavaScriptSerializer'ом
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
|||||||||||
09.01.2015, 21:57 [ТС] | 17 | ||||||||||
А какого он будет типа?
Во view добавил имя для инпута:
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
09.01.2015, 22:43 | 18 |
0
|
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 80
|
||||||
09.01.2015, 23:38 [ТС] | 19 | |||||
Точно, сори за невнимательность. Исправил вот так:
Аргументы-типы для метода "System.Web.Script.Serialization.JavaScriptSerializer.Deserialize<T>(string) " не должны определяться по использованию. Попытайтесь явно определить аргументы-типы.
0
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
10.01.2015, 09:39 | 20 |
каким образом он должен понять в какой тип ему преобразовать строку? там есть generic метод, его и используйте
0
|
10.01.2015, 09:39 | |
10.01.2015, 09:39 | |
Помогаю со студенческими работами здесь
20
Передать параметр с html формы другой странице по id , javascript Передать инфу контроллеру Передать выбранное значение из списка контроллеру Как передать функцию в массив и обратно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |