Создание экземпляра DataContract в javascript при использовании службы WCF с ScriptService - PullRequest
0 голосов
/ 11 декабря 2008

У меня есть простой сервис WCF, который я раскрываю с помощью .svc. Служба имеет несколько связанных классов DataContract, которые используются с ServiceContracts. При вызове метода, который получает некоторые данные, возвращаемый json имеет все свойства, как и следовало ожидать.

У меня вопрос, как я могу получить новый экземпляр одного из этих объектов DataContract в javascript.

<asp:ScriptManager ID="ScriptManager1" runat="server">
  <Services>
    <asp:ServiceReference 
      Path="./Service1.svc" />
  </Services>
</asp:ScriptManager>

<script>
// what I'd like to be able to do in javascript
var myInstance = new MyNamespace.MyDataContractClassName();
myInstance.someProperty = "Prop Value";
</script>

Ответы [ 2 ]

1 голос
/ 12 декабря 2008

Если вы перейдете к ./Service1.svc/js, вы увидите точный клиентский прокси-скрипт, сгенерированный сервером.

В конце этого файла вы должны увидеть строки, которые регистрируют ваши типы контрактов данных как типы клиентов - это просто делает их доступными в системе типов клиентов и позволяет вам вызывать известный конструктор, но на самом деле это не код их свойства, потому что вы можете установить любые произвольные свойства для любого объекта в JavaScript.

Таким образом, код, который вы действительно написали, является правильным, если предположить, что пространство имен и объявление класса совпадают с тем, что есть в коде прокси, но вы можете проверить это сами.

0 голосов
/ 12 декабря 2008

Спасибо @Sam, я надеялся, что был способ, которым все свойства могли быть созданы так, чтобы, когда я сделал новый MyDataContractClassname (); У меня мог бы быть хороший законченный объект, который я мог бы обойти, и мне не нужно было проверять наличие свойств и тому подобное - просто обрабатывать его как объект, который я получил от службы, которая возвращает DataContract. Если, скажем, у меня есть метод, который отображает содержимое этого объекта пользователю, а иногда он показывает новый, а иногда показывает один из службы, было бы неплохо просто предположить, что все свойства там, как вы, если вы экземпляр рукописного "класса"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...