【问题标题】:Instantiate DataContract in javascript when using WCF service with ScriptService将 WCF 服务与 ScriptService 一起使用时在 javascript 中实例化 DataContract
【发布时间】:2015-11-17 21:44:20
【问题描述】:

我有一个使用 .svc 公开的简单 WCF 服务。该服务有一些与 ServiceContracts 一起使用的相关 DataContract 类。当调用获取一些数据的方法时,返回的 json 具有您所期望的所有属性。

我的问题是如何在 javascript 中获取这些 DataContract 对象之一的新实例。

<asp:ScriptManager ID="ScriptManager1" runat="server">
  <Services>
    <asp:ServiceReference 
      Path="./Service1.svc" />
  </Services>
</asp:ScriptManager>

<script>
// what I'd like to be able to do in javascript
var myInstance = new MyNamespace.MyDataContractClassName();
myInstance.someProperty = "Prop Value";
</script>

【问题讨论】:

    标签: javascript wcf


    【解决方案1】:

    如果您浏览到 ./Service1.svc/js,您可以看到服务器生成的确切客户端代理脚本。

    在此文件的末尾,您应该会看到将您的数据协定类型注册为客户端类型的行 - 这只是使它们在客户端类型系统中可用,并允许您调用众所周知的构造函数,但它实际上并没有编码它们的属性,因为您可以在 JavaScript 中的任何对象上设置任意属性。

    因此,您实际编写的代码是正确的,假设命名空间和类声明与代理代码中的内容匹配,但您可以自己验证。

    【讨论】:

      【解决方案2】:

      感谢@Sam,我希望有一种方法可以创建所有属性,这样当我执行 new MyDataContractClassname();我可以有一个很好的完整对象,我可以传递并且不必测试属性的存在等等 - 就像我从返回 DataContract 的服务中获得的对象一样对待它。如果说我有一个方法可以向用户显示该对象的内容,有时它会显示一个新的,有时会显示来自服务的一个,那么假设所有属性都在那里就好了,就像你想的那样实例化一个手写的“类”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多