我正在对新的ASP.NET Web API进行一些简单的测试,当从我的action方法返回可序列化的类或集合时,我遇到了以下问题.
我的班级看起来像这样:
<Serializable()>
Public Class Test
<XmlElement(ElementName:="Name")>
Public Property Name() As String = String.Empty
<XmlElement(ElementName:="ID")>
Public Property ID() As String = String.Empty
<XmlElement(ElementName:="ClassID")>
Public Property ClassID() As String = String.Empty
End Class
Run Code Online (Sandbox Code Playgroud)
我检索单个Test的测试操作方法如下所示:
Public Function GetTest(ByVal id As String) As Test
Dim newTest As Test = new Test() With {.ID = id, .Name = "My Test", .ClassID = System.Guid.NewGuid().ToString()}
return newTest
End Function
Run Code Online (Sandbox Code Playgroud)
当我在浏览器或Fiddler中将结果作为XML或JSON查看时,返回的Test类的属性名称已经为它们添加了unserscores,如下所示:
<Test>
<_ClassID>88bb191d-414c-45a4-8213-37f96c41a12d</_ClassID>
<_ID>ed853792-b7eb-4378-830b-1db611e12ec9</_ID>
<_Name>Another Test</_Name>
</Test>
Run Code Online (Sandbox Code Playgroud)
如何摆脱元素/属性名称上不需要的下划线?
谢谢!
您可以使用DataMember属性:
Public Class Test
<DataMember(Name:="Name")>
Public Property Name() As String = String.Empty
<DataMember(Name:="ID")>
Public Property ID() As String = String.Empty
<DataMember(Name:="ClassID")>
Public Property ClassID() As String = String.Empty
End Class
Run Code Online (Sandbox Code Playgroud)
经过进一步调查后,似乎如果你在C#中做同样的事情,就不会添加下划线而不需要使用DataMember.它只是有效.所以我想这应该是一些VB.NET的东西.
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |