我有一个 WebAPI 控制器,我正在与具有属性属性的模型类一起使用,以将 C# 命名转换为更像 JavaScript 的命名。
[DataMember(Name = "posInfo")]
public string PositionInformation { get; set; }
如果我通过网络公开值,一切正常。现在,我尝试在服务器端调用控制器,以便在应用程序启动时引导一些初始值。但是,如果我在本地调用控制器,则 [DataMember] 属性不会"解析"。所有内容都以 C# 命名属性返回。
[DataContract][DataMember] 的东西什么时候启动,如果我在本地调用我的控制器,如何使用它?
当您的对象被反序列化时,将使用 DataMember。因此,如果您使用 web-api 通过网络发送对象,则客户端应该以 posinfo 的形式接收属性。如果通过 .net 在本地引用对象(例如,在库或项目引用中),则将按其名称 PositionInformation 引用该属性。
根据您正在执行的序列化的类型,此属性可能未被转换,或者 DataMember 属性不受支持。FWIW,Web API 的内置 XML 和 JSON 序列化程序支持 DataMember 和 DataContract 属性。
有关 DataMember 属性如何工作的详细信息,请访问 MSDN 站点。