Asp.net web api ASP.NET WebAPI在返回的XML和JSON元素名称上加下划线

Asp.net web api ASP.NET WebAPI在返回的XML和JSON元素名称上加下划线,asp.net-web-api,Asp.net Web Api,我正在对新的ASP.NET Web API进行一些简单的测试,从action方法返回可序列化的类或集合时遇到以下问题 我的班级是这样的: <Serializable()> Public Class Test <XmlElement(ElementName:="Name")> Public Property Name() As String = String.Empty <XmlElement(ElementName:="ID")>

我正在对新的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
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
当我在浏览器或Fiddler中以XML或JSON的形式查看结果时,返回的测试类的属性名称前面已经添加了unserscore,如下所示:

<Test>
    <_ClassID>88bb191d-414c-45a4-8213-37f96c41a12d</_ClassID>
    <_ID>ed853792-b7eb-4378-830b-1db611e12ec9</_ID>
    <_Name>Another Test</_Name>
</Test>

88bb191d-414c-45a4-8213-37f96c41a12d
ed853792-b7eb-4378-830b-1db611e12ec9
另一个测试
如何消除元素/属性名称上不需要的下划线

谢谢

您可以使用该属性:

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
公共类测试
公共属性名称()为String=String.Empty
公共属性ID()为String=String.Empty
公共属性ClassID()为String=String.Empty
末级

经过进一步的调查,如果您在C#中执行相同的操作,则不会添加下划线,也不需要使用DataMember。它只是工作。所以我想这应该是一些VB.NET之类的东西。

在类之前删除
,那么结果将不会包含“u”。

我在json中有过类似的使用带前缀的下划线的经验,并且我没有用Serializable属性标记类。在我的案例中,解决方案是:

Imports Newtonsoft.Json

<JsonObject>
Public Class MyObject
...
导入Newtonsoft.Json
公共类MyObject
...

Darin,谢谢你的建议,但更改对输出没有影响。元素名仍然包含前导的“_”。奇怪的是,这对我有效。您使用的是Beta版还是RC版?我正在使用RC.RC。从ASP.NET网站下载并安装。是否希望我向您发送工作正常的示例项目?谢谢,Darin。我使用您的DataMember属性建议解决了这个问题,结果我只是在类上省略了必需的DataContract属性,这是使DataMember属性工作所必需的。这似乎仍然是一个问题,而且它在C#中而不是在VB中工作的事实似乎是一个缺陷。谢谢你的帮助和示例代码。这对我来说是正确而简单的答案。谢谢你,哈哈!实际上,我刚刚从.NETFramework指南书中读到关于
属性如何经常被误用的内容,结果证明这也是我的问题所在。感谢您提供了这个简单而准确的解决方案。