Предоставить Enum клиенту JavaScript WebService без использования его в WebMethod? - PullRequest
1 голос
/ 28 апреля 2009

Я создаю приложение ASP.NET 3.5 и хотел бы представить перечисление, которое есть в моем классе WebService, без использования его в качестве параметра в одном из моих методов WebMethods.

У меня есть очень простой пример, иллюстрирующий то, что я хочу ... Допустим, у меня есть следующий WebService (я назову его 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

Поскольку я использовал Enum в одном из WebMethods, он будет выводить следующее в JavaScript для генерации для Агента, когда WebService будет указан на моей странице .aspx (от 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);
}

Теперь я могу пойти и использовать эти перечисления где угодно на стороне клиента. Теперь все в порядке, но у меня есть еще один Enum в моем Агенте, который я на самом деле не использую ни в одном из WebMethods, который я также хотел бы автоматически отображать в JavaScript агента. Есть ли способ, возможно, атрибут или что-то, что я мог бы использовать, чтобы включить его?

Если нет, то мое запасное решение состоит в том, чтобы просто создать фиктивный метод с моим Enum в качестве параметра, чтобы он был доступен, и просто никогда не вызывать его из JS, хотя я бы предпочел не засорять код. Спасибо!

Ответы [ 2 ]

1 голос
/ 28 апреля 2009

Очевидно, что самым простым решением было бы создание фиктивного метода. Думаю, мне интересно, зачем вам нужно, чтобы перечисление из вашего веб-сервиса было доступно в вашем JavaScript, если вы никогда не передаваете это перечисление в службу или каким-либо образом получаете его от службы.

0 голосов
/ 28 апреля 2009

Вы хотя бы используете enum в сервисе? В противном случае, это не принадлежит там.

Полагаю, вам следует взглянуть на атрибут [XmlInclude].

...