2009-02-25 11 views
3

私は最終的にインテリセンスは、Visual Studio 2008にパッチKB958502を適用すると、このラインを含むことにより、jQueryのために働いてしまっている:私の.jsファイルの先頭にWCF Ajaxサービスのインテリセンスを取得するにはどうすればよいですか?

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

を。 (ここに示すように)今私はのScriptManagerのScriptReference要素によって生成されたクライアントプロキシにJavaScriptのインテリセンスを取得する方法を把握しようとしている:

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

クライアントプロキシが働いている - つまり、私はそれらを介して電話をかけることができしかし、私はIntellisenseを得ていない。

私のサービスは.SVCファイルで定義されます。ファイルの背後にあるコードは次のようになり

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

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

このクラスのサンプル方法は次のとおりです。

//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; 
    } 

このように定義されたデータコントラクトを使用します:

私のJavaScriptファイルで
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; } 
} 

}

、このサービスへの呼び出しは次のようになります。

Documents.Services.DocLookups.GetCategoriesForSelectList(... 

が、私は文書を入力する場合、私は、例えば(何のインテリセンスを取得していません。何もポップアップしない)。私は、生成されたメソッドまたはメソッドによって使用される[DataContract]型のいずれに対しても知覚されません。

私はと考えています。これらのプロキシとタイプのIntellisenseを入手するには間違いがあるかもしれません。 TIA。

答えて

4

/// <reference path="../Services/DocLookups.svc" /> は機能しませんか?私は

///<reference path... 

行を追加する必要があることを指摘し、スコットへ

+0

それは、最初は動作しませんでしたが、それ私がMicrosoftAjax.jsを参照する前にそれを前もって実行しなければならないことが分かったら、DIDの作業が完了しました。 /// <参照名= "MicrosoftAjax.js" /> /// <参照パス= "../ Documents/Services/DocLookups .svc "/> ヘルプありがとうございます。 –

+0

/// <リファレンスパス= "http://localhost/Services/DocLookups.svc/js" /> .....それはいいとは思いません! – BozoJoe

+0

VS2010では、MicrosoftAjax.jsリファレンスでサービスファイルの参照を先行させる必要があります。どこに書かれているのかわかりませんでした! – BrianFinkel

0

感謝。私はそれがどこに書かれているのかわかりませんが、WCFがクライアントサイドのプロキシを生成するために必要とされていたことを何とか見逃しました - 同じイディオムがIntellisense for JQueryを取得するのに使用されています。

記録のために、私が使用しなければならなかった行は、スコットが私のプロジェクト構造を与えたものと少し異なっていました。私が試した:

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

私は、ファイルを保存し、VS [編集]メニューから[インテリセンス ... 更新のJScriptインテリセンスを選びました...

残念ながら、これは動作しませんでしたし、インテリセンスを更新するとき、私は、次のエラーを得た:

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

だから私はいくつかの進歩を遂げてきましたが、私はまだかなりありませんよ。

0

私はこの同じ問題に出くわして、私の問題は解決可能なのVisual Studio 2008用の修正プログラムがあることが見つかりました:私は私のポストに示すように

http://support.microsoft.com/kb/958502