如何在本地控制器调用中使用[DataMember]序列化属性?

时间:2012-12-17 13:51:21

标签: c# asp.net-web-api json.net

我有一个WebAPI控制器,我正在使用具有属性属性的模型类,将C#命名转换为更像JavaScript的命名。 e.g。

    [DataMember(Name = "posInfo")]
    public string PositionInformation { get; set; }

如果我通过线路暴露值,一切正常。现在我尝试在服务器端调用控制器,以便在应用程序启动时引导一些初始值。但是如果我在本地调用控制器,则[DataMember]属性不会“解析”。一切都以C#命名属性返回。

如果我在本地调用我的控制器,那么[DataContract] [DataMember]的内容何时开始以及如何使用它?

1 个答案:

答案 0 :(得分:1)

在对象被取消/序列化时将使用DataMember。因此,如果您使用web-api通过网络发送对象,则您的客户端应该以 posInfo 的身份接收该属性。如果您通过.net在本地引用对象(例如,在库或项目引用中),那么您将通过名称 PositionInformation 引用该属性。

根据您正在执行的序列化类型,可能未翻译此属性或不支持DataMember属性。 FWIW,Web API的内置XML和JSON序列化程序支持DataMember和DataContract属性。

有关DataMember属性如何工作的更多信息,请访问the MSDN site