2008-12-10 4 views
0

J'ai un simple service WCF que j'expose en utilisant un fichier .svc. Le service a des classes DataContract connexes qui sont utilisées avec les ServiceContracts. Lorsque vous appelez une méthode qui obtient des données, le fichier json qui revient a toutes les propriétés comme vous le souhaitez.Instancier DataContract en javascript lors de l'utilisation du service WCF avec ScriptService

Ma question est comment puis-je obtenir une nouvelle instance d'un de ces objets DataContract en 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> 

Répondre

1

Si vous accédez à ./Service1.svc/js vous pouvez voir le script proxy exacte du client qui est généré par le serveur. À la fin de ce fichier, vous devriez voir les lignes qui enregistrent vos types de contrats de données en tant que types de clients - cela les rend disponibles dans le système de type client et vous permet d'appeler un constructeur bien connu, mais il ne fait pas codez leurs propriétés, car vous pouvez définir des propriétés arbitraires sur n'importe quel objet en JavaScript.

Le code que vous avez réellement écrit est donc correct, en supposant que l'espace de nom et la déclaration de classe correspondent à ce qui est dans le code du proxy, mais vous pouvez le vérifier vous-même.

0

Merci @Sam, j'espérais qu'il y avait un moyen que toutes les propriétés pourraient être créées de sorte que quand j'ai fait new MyDataContractClassname(); Je pourrais avoir un bel objet complet que je pourrais passer et ne pas avoir à tester l'existence de propriétés et autres - juste le traiter comme un objet que j'ai reçu d'un service qui renvoie le contrat de données. Si je dis que j'ai une méthode qui affiche le contenu de cet objet à un utilisateur, et parfois il en montre un nouveau et en montre parfois un du service, il serait bon de supposer que toutes les propriétés sont là, comme si vous instancié une "classe" écrite à la main

Questions connexes