私は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からコールすることはありません。ありがとう!
enumはサービスで使用されます。シリアライズされJSONとして返されるクラスのプロパティとしてクライアントに渡されます。 –
ダミーメソッドを使用してすべての機能を有効にしました。実装するのが最も苦労しました。 –