2009-02-25 5 views
3

J'ai finalement obtenu IntelliSense travailler pour JQuery par l'application du correctif KB958502 à Visual Studio 2008 et incluant cette ligne:Comment puis-je obtenir intellisense pour les services WCF Ajax?

/// <reference path="JQuery\jquery-1.3.2.js"/> 

en haut de mes fichiers .js. Maintenant, je suis en train de comprendre comment obtenir IntelliSense JavaScript pour les serveurs proxy clients générés par les éléments ScriptReference du ScriptManager (comme indiqué ici):

<asp:ScriptManager ID="ScriptManager1" runat="Server" EnablePartialRendering="false" AsyncPostBackTimeout="999999"> 
     <Services> 
      <asp:ServiceReference path="../Services/DocLookups.svc" /> 
     </Services> 
    </asp:ScriptManager> 

Les procurations client travaillent - à savoir que je peux faire des appels à travers eux , mais je ne reçois aucun Intellisense.

Mon service est défini par un fichier .svc:

<%@ ServiceHost Language="C#" Debug="true" Service="Documents.Services.DocLookups" CodeBehind="~/App_Code/DocLookups.cs" %> 

Le code derrière le fichier ressemble:

[ServiceContract(Namespace = "Documents.Services", Name = "DocLookups")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
public class DocLookups { 
... 

une méthode d'échantillonnage dans cette classe est:

//Called at the begining of the page to fill in the category list 
    [OperationContract] 
    public SelectOption[] GetCategoriesForSelectList() 
    { 
     SelectOption[] Result; 
     IDocumentRepository repository = new DocumentEntityRepository(ConnectionString); 
     Result = (from cat in repository.GetDocCategories() 
        select new SelectOption(cat.Category_ID.ToString(), cat.CategoryName)).ToArray(); 
     if (Result.Length > 0) 
      Result[0].Selected = true; //Select first item 
     return Result; 
    } 

et utilise un contrat de données défini comme suit:

namespace Documents.Services { 

[DataContract] 
public class SelectOption 
{ 
    //A useful DTO to use when filling a <select> element with options 
    public SelectOption(string optionValue, string optionText) { 
     OptionValue = optionValue; 
     OptionText = optionText; 
     Selected = false; 
    } 
    public SelectOption(string optionValue, string optionText, bool selected) { 
     OptionValue = optionValue; 
     OptionText = optionText; 
     Selected = selected; 
    } 

    [DataMember] 
    public string OptionValue { get; set; } 
    [DataMember] 
    public string OptionText { get; set; } 
    [DataMember] 
    public bool Selected { get; set; } 
} 

}

Dans mes fichiers javascript, un appel à ce service ressemble à:

Documents.Services.DocLookups.GetCategoriesForSelectList(... 

mais je ne reçois pas IntelliSense (par exemple, si je tape des documents. rien n'apparaît). Je ne comprends pas intellisense pour les méthodes générées ou les types [DataContract] utilisés par les méthodes.

Je crois que je suis supposé pour obtenir Intellisense pour ces proxies et types, mais ne peux pas comprendre ce que je pourrais faire mal. TIA.

Répondre

4

Est-ce que /// <reference path="../Services/DocLookups.svc" /> ne fonctionne pas?

+0

Il ne fonctionnait pas au début, comme je l'ai indiqué dans mon post, mais il DID travail une fois que je me suis rendu compte que je devais le précéder d'une ref à MicrosoftAjax.js /// /// Alors merci pour l'aide. –

+0

/// ..... ce ne serait pas sympa! – BozoJoe

+0

La référence de fichier de service avec la référence MicrosoftAjax.js est apparemment également requise dans VS2010. Je ne pouvais pas trouver cela documenté nulle part! – BrianFinkel

0

Merci à Scott de remarquer que je dois ajouter la ligne

///<reference path... 

. Je ne sais pas où cela est documenté, mais j'ai raté d'une manière ou d'une autre que c'était nécessaire pour les proxies côté client générés par WCF - bien que cela soit logique étant donné que le même idiome est utilisé pour obtenir l'Intellisense pour JQuery. Pour l'anecdote, la ligne que j'ai fini par utiliser était légèrement différente de ce que Scott a suggéré étant donné la structure de mes projets. J'ai essayé:

/// <reference path="../Documents/Services/DocLookups.svc" /> 

J'ai sauvé le fichier et dans le menu VS Edition choisi IntelliSense ... Mise à jour JScript IntelliSense ...

Malheureusement, cela n'a pas fonctionné et j'ai eu l'erreur suivante lors de la mise à jour du IntelliSense:

Error updating JScript IntelliSense: 
C:\TFSSource\LitigationPortal\Version 1.0\LitigationPortal\Documents\Services\DocLookups.svc: 
'Type' is undefined @ 0:0 

J'ai fait quelques progrès, mais je ne suis pas encore tout à fait.

Questions connexes