|
|
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Привет всем. Последнее время частенько юзаю веб методы на страницах, чтобы подтягивать асинхронно данные, типа: Тестовая .aspx страница и вспомогательный класс Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Проблема в том, что когда я создаю класс на клиенте, то я не получаю полноценного экземпляра объекта класса, согласно вызванного конструктора. Мало того - он спокойно хавает все, что ему запихнут в параметры: конструирование на клиенте Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. Ну, и, наконец, вопрос: мож че я не знаю/забыл. Типа: какой-нить атрибут к классу Test нужно приклеить, а? Перевернув мир - оглянись, может перевернулся ты сам?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2012, 23:07 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
С утра перечитал - немного сумбурно и пример не очень, рихтую: проверочный метод продемонстрировать лучше так: C# Код: c# 1. 2. 3. 4. 5. javascript Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. На "богатом" клиенте удобно работать объектами и отсылать вновь созданные, которые могут быть достаточно сложные. В текущем состоянии объект приходится лепить полностью, с долей вероятности "занесения" в него чей-то не того :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 10:34 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConst, Что Вам не понятно, конкретно??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 11:01 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Где-то в степиiConst, Что Вам не понятно, конкретно???Немного не так: есть-ли возможность заставить среду выполнять конструктор на клиенте. Коли имеется проекция серверного кода (веб-метода и вспомогательного класса) на клиент, то логично предположить, что должны выполняться и конструкторы, по крайней мере дефолтный. Возможно, такое поведение к классу по умолчанию не применяется. Многие фишки не лежат на поверхности. А вопрос такой: кто знает, есть-ли способ заставить среду это делать? Но, наверное, я слишком многого хочу . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 11:40 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConst, конструкция new Example1.Test() не подразумевает выполнения сервеного кода, как ты уже понял. То есть надо писать веб-метод(ы) для создания таких объектов с помощью серверного кода или использовать Script# . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 12:04 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConst, Растолкуйте поподробней, что такое конструктор на клиенте, зы, объект на клиенте, и объект на сервере, это две разные вещи, как колбаса и паровоз. ( только что продолговатые) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 12:05 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConstНемного не так: есть-ли возможность заставить среду выполнять конструктор на клиенте. Насколько я понял, вам нужно передать объект, созданный на клиенте, на сервер. Вот неплохая статья Mapping XML to Objects Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 12:52 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Где-то в степиiConst, Растолкуйте поподробней, что такое конструктор на клиенте, var o = new Object(1); конструктор объекта-числа :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 12:56 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConstНемного не так: есть-ли возможность заставить среду выполнять конструктор на клиенте.Не корректно выразился, надо как-то так: есть ли возможность указать среде создать функцию Test с конструктором по умолчанию . См. 12499264 , спойлер javascript . Мужики, без обид, вы не в ту степь... ASP.Net автоматом создает клиентский объект/неймспейс, называйте как хотите, в данном случае Example1 . Если я буду создавать на сервере классы типа Test, User, ХренЛысый и т.п., то у меня появятся: Example1.Test Example1.User Example1.ХренЛысый (кириллицу не проверял :) ) и т.п.. При чем это функции, создающие экземпляр (клиентскую проекцию) соответствующего серверного класса, на что указывает свойство __type . По нему серверный код веб-метода и приводит клиентский объект к типу серверного объекта. Если и сейчас не понятно - то, увы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 13:07 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Starlex, дак как вы привяжете тип обьект клиента, к типу серверному. зы на клиенте это просто словарь. или делать обертку. или работать как со словарем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 13:10 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Starlex, Мой последний пост Вас не включал. :) Хотя, поясняю, проблем с передачей объектов нет. Гоняю туда-сюда как котят. Проблема с валидацией экземпляра на клиенте. Как я показал в первом примере, могу создать любой экземпляр Test, в том числе и не валидный. И нет конструктора по умолчанию. Если такое вообще не заложено в реализацию этой части ASP.Net, то очень жаль - серьезное упущение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 13:14 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
проблем с передачей объектов нет. Гоняю туда-сюда как котят. Вы гоняете просто строку JSON, а не какой обьект, применительно, к типу сервера, или клиента. Проблема с валидацией экземпляра на клиенте. Как я показал в первом примере, могу создать любой экземпляр Test, Вы можете создать словарь ключ = значение , он вообще никак не соотносится к серверному типу, там может лежать, куча хлама всякого. И нет конструктора по умолчанию. какой вы хотите увидеть у словаря конструктор по умолчанию, такой как на сервере, так это не тип сервера, а просто словарь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:01 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, Как расшифровывается JSON ? А? Это именно объекты : клиентский и серверный. Ясен пень, что в момент передачи они сериализуются :). А как они коррелируются, я уже показывал, и не раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:21 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, поменяйте var test1 = new Example1.Test() test1.name = 'Василий' test1.age = 18 на var test1 = new Object() test1.name = 'Василий' test1.age = 18 и ничего не изменится на сервере, с данными атрибутами он будет работать валидно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:32 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConstStarlex, Проблема с валидацией экземпляра на клиенте. Во всяком случае, если нужно делать валидацию клиентского объекта к серверному типу, то логичней это делать на сервере. Инструменты парсинга есть, например, JavascriptSerializer неплохой пример особенно в конце разбирается объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:34 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Где-то в степиГде-то в степи, поменяйте var test1 = new Example1.Test() test1.name = 'Василий' test1.age = 18 на var test1 = new Object() test1.name = 'Василий' test1.age = 18 и ничего не изменится на сервере, с данными атрибутами он будет работать валидно..В этом примитивном примере, да ничего не изменится. Разница между ними лишь в том, что в первом случае конструктор создает (в стотысячный раз повторяю) поле __type в котором описан тип класса. И все будет прокатывать, до тех пор, пока не возникнет коллизия десереализации клиентского объекта между Namespace1.Test Namespace2.Test. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:49 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
StarlexiConstStarlex, Проблема с валидацией экземпляра на клиенте. Во всяком случае, если нужно делать валидацию клиентского объекта к серверному типу, то логичней это делать на сервере. Инструменты парсинга есть, например, JavascriptSerializer неплохой пример особенно в конце разбирается объект.Да, блин, это все понятно. Вопрос-то не изменился. :) Если среда генерирует клиентскую функцию на основе серверного класса, то это тот самый класс - и зафиг его валидировать. Иначе нах вообще они (M$) заложили эту фишку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:58 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
На сервере конструктор и его перегрузки вызываются в зависимости от набора передаваемых данных. Если набор не подходит ни под одну из перегрузок, то включается странный алгоритм (раньше как-то не обращал внимания). :) Если не найден набор данных, соответствующий конструктору, то вызывается дифолтный или пустой конструктор + втыкаются все подходящие данные. Не гуд. А на клиенте - увы, нет. А было-бы неплохо. Э-э-х! Придется самому писать :)... Думаю, тема выдохлась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 15:33 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConstЕсли не найден набор данных, соответствующий конструктору, то вызывается дифолтный или пустой конструктор + втыкаются все подходящие данные. Не гуд. Вы что-то путаете. Если не найден конструктор, соответствующий набору данных, то будет ошибка компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 16:21 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
Starlex, Ничуть. Не забывайте, что идет речь об автоматической десереализации входных данных веб службы. Как там это реализовано - х.з., да и неинтересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 16:39 |
|
||
|
Конструктор на клиенте
|
|||
|---|---|---|---|
|
#18+
iConst, О какой коллизии выговорите. У вас параметр метода ипизирован, и этот код будет прокатывать var test1 = new Object() test1.name = 'Василий' test1.age = 18 с созданием конструктора с параметрами.( если есть они в JSON) если конечно там бы стоял просто обезличенный тип object, то десериализтор бы растерялся и сделал словарь по подобию jSON зы проверка на валидность в занесении в словарь данных ( создание обьекта) на клиенте, это слой выше мы говорим об отправке данных на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 17:08 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=37780786&tid=1359633]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
181ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 534ms |

| 0 / 0 |
