asp.net - 将 Enum 暴露给 WebService 的客户端 JavaScript,而不在 WebMethod 中使用它?

标签 asp.net javascript web-services asp.net-ajax asp.net-3.5

我正在构建一个 ASP.NET 3.5 应用程序,并且希望公开 WebService 类中的枚举,而不将其用作我的 WebMethod 中的参数。

我有一个非常简单的示例来说明我想要的内容...假设我有以下 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

因为我在其中一个 WebMethods 中使用了 Enum,所以当我的 .aspx 页面(来自 http://localhost/Agent.asmx/js)引用 WebService 时,它​​将在代理生成的 JavaScript 中输出以下内容:

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 中使用它,我也希望在代理的 JavaScript 中自动公开它。有没有办法,也许是一个属性或我可以使用的东西,使它被包含在内?

如果没有,我的后备解决方案是只创建一个虚拟方法,并使用我的 Enum 作为参数,以便它可用,并且永远不会从 JS 调用它,尽管我不想乱扔代码。谢谢!

最佳答案

显然,最简单的解决方案是创建虚拟方法。我想我想知道如果您从未将该枚举传递给服务或以任何方式从服务接收它,为什么您需要在 JavaScript 中使用来自 Web 服务的枚举。

关于asp.net - 将 Enum 暴露给 WebService 的客户端 JavaScript,而不在 WebMethod 中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/798435/

相关文章:

asp.net - ASP.NET 应用程序中的 connectionString 超时应该有多长? (sql客户端)

jquery 替代 ajax 模式弹出扩展器

asp.net - 存储可变数据

javascript - 将图像从数据库加载到 Bootstrap 轮播中

javascript - 复制、拖放错误 : item stops moving

javascript - 如何访问外部 javascript 变量并在 xsl 中打印它?

javascript - 如何从 FCM 后台推送通知接收数据到主 javascript 线程,以便这些值可以用于编码?

c# - C# Web 服务可以调用其他 DLL 代码吗?

asp.net - 为什么ASP.NET JSON Web服务在 'd'中返回结果?

java - Jax-ws 2.2 或 Metro 作为 Tomcat 运行时环境