2009-04-28 5 views
1

私はASP.NET 3.5アプリケーションを構築しています。私はWebMethodsでパラメータとして使用せずにWebServiceクラスにある列挙型を公開したいと考えています。私は1つで列挙型を使用しているのでWebMethodでEnumを使用せずにWebServiceのクライアントJavaScriptにEnumを公開していますか?

<System.Web.Script.Services.ScriptService()> _ 
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class Agent 
    Inherits System.Web.Services.WebService 

<WebMethod(EnableSession:=True)> _ 
Public Function DoSomething(ByVal doWhat As WhatEnum) As Boolean 
    Return ... 
End Function 

End Class 

Public Enum WhatEnum 
    AskStackOverflowQuestion 
    PhoneAFriend 
    FiftyFifty 
End Enum 

私は私が欲しいものを説明するために、本当に簡単な例を持っている...のは、私は、次のWebサービスを(私はAgent.asmxそれを呼びます)があるとしましょう私が好きな場所

if (typeof(SomeNamespace.WhatEnum) === 'undefined') { 
    SomeNamespace.WhatEnum = function() { throw Error.invalidOperation(); } 
    SomeNamespace.WhatEnum.prototype = { AskStackOverflowQuestion: 0,PhoneAFriend: 1,FiftyFifty: 2} 
    SomeNamespace.WhatEnum.registerEnum('SomeNamespace.WhatEnum', true); 
} 

今、私はこれらの列挙型を移動して使用することができます:WebMethodのの、それはWebサービスが(http://localhost/Agent.asmx/jsから)私の.aspxページで参照されている場合、エージェントのために生成して、JavaScriptで出力を次のようになりますクライアント側。さて、それはすべて素晴らしいと思いますが、エージェントのJavaScriptで実際に公開されたいWebMethodの中で私が実際に使用していない別のEnumがエージェントにあります。それを含めるには、おそらく属性や何かを使う方法がありますか?

私のフォールバックの解決策は、Enumをパラメータとしてダミーのメソッドを作成して使用できるようにすることです。JSからコールすることはありません。ありがとう!

答えて

1

明らかに最も簡単な解決策は、ダミーメソッドを作成することです。私はあなたがあなたのJavaScriptに利用できるようにするためにあなたのWebサービスから列挙を必要としているのだろうかと思っています。もしあなたがその列挙を決してサービスに渡したり、

+0

enumはサービスで使用されます。シリアライズされJSONとして返されるクラスのプロパティとしてクライアントに渡されます。 –

+0

ダミーメソッドを使用してすべての機能を有効にしました。実装するのが最も苦労しました。 –

0

少なくともサービスで列挙型を使用していますか?そうでなければ、それはそこに属しません。

私は[XmlInclude]属性を見てください。

+0

enumがサービスで使用されています。シリアライズされJSONとして返されるクラスのプロパティとしてクライアントに渡されます。 –

+0

そのクラスを正常に戻しただけでは、列挙型はそこにあるでしょうね。 [ScriptService]は機能しませんでしたか? –

+0

私はXmlIncludeを試しましたが、それはWSDLのためだと思います。Enumのディレクトリは動作しないので、Enumのダミークラスラッパーを作成する必要があります。 –

関連する問題