Je construis une application ASP.NET 3.5 et je voudrais exposer une énumération que j'ai dans ma classe WebService sans l'utiliser comme paramètre dans une de mes WebMethods.Exposer une énumération à un client JavaScript d'un WebService sans l'utiliser dans un WebMethod?
J'ai un exemple très simple pour illustrer ce que je veux ... Disons que je le WebService suivant (je vais l'appeler Agent.asmx):
<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
Parce que je l'Enum dans un des WebMethods, il génèrerait les éléments suivants dans le JavaScript génère pour l'agent lorsque le WebService est référencé dans ma page .aspx (de http://localhost/Agent.asmx/js):
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);
}
maintenant, je peux aller utiliser ces énumérations où je veux du côté client. Maintenant, tout va bien, mais j'ai un autre Enum dans mon Agent que je n'utilise pas dans les WebMethods, que j'aimerais aussi voir apparaître automatiquement dans le JavaScript de l'Agent. Existe-t-il un moyen, peut-être un attribut ou quelque chose que je pourrais utiliser, de faire en sorte qu'il soit inclus? Sinon, ma solution de repli est de simplement créer une méthode fictive avec mon Enum en tant que paramètre pour qu'il soit disponible, et ne l'appelle jamais du JS, bien que je préfère ne pas jeter le code. Merci!
L'enum est utilisé dans le service; il est renvoyé au client en tant que propriété sur une classe sérialisée et renvoyée en tant que JSON. –
J'ai choisi d'utiliser la méthode dummy pour que tout fonctionne - c'était le plus simple à mettre en œuvre. –