我有一个WebAPI方法如下:
Public Function PostTestStatus(dto As DTOStatusUpdate) As HttpResponseMessage
和“dto”参数定义如下:
Public Class DTOStatusUpdate
Property QueryByNameDTO As QueryByNameDTO
Property Tests As ICollection(Of Test)
Public Sub New()
Me.Tests = New Collection(Of Test)
End Sub
End Class
测试只是一个简单的类(仅限字符串/整数)
我发送以下json :(验证为正确)
{"QueryByNameDTO":{"email":"atest@here.co.uk","notes":"blahblahblah","Name":"bob"},"Tests":[{"Name":"gsdf","Status":"idle"},{"Name":"gsdf","Status":"idle"}]}
我的方法永远不会到达,因为Collection(Of Test)无效/正确 香港专业教育学院尝试过List(Of Test),IEnumerable(Of Test)和其他各种组合都无法工作。
我没有得到的部分是,如果我发送没有“测试”列表的json,我的方法断点到达并且第一个属性(QueryByNameDTO)全部存在且正确。
如果我将DTOStatusUpdate类更改为仅使用单个“Test”而不是List(of Test),它也可以工作。
问题似乎在于使用List / Collection / Enumeration(测试)。
我做错了什么,我已经在这里待了好几个小时了,它已经开始了。我用谷歌搜索并搜索并绕圈试图寻找解释。我得到的最接近的是添加参数然后到达方法和断点,但参数的所有属性都没有?
我可以从webapi方法返回一个IEnumerable(无论如何),所以我缺少将一个发送给webapi方法吗?
EDIT1 :将测试类剥离到一个字段“id”,在那里工作正常,并将其重新构建,我将其缩小为该类中某个字段的一个属性。
以下是测试类Status和DNNUserId中的两个字段。 无论是否有必需属性,状态都可以正常工作! 但是,将必需属性添加到DNNUserId属性会导致不调用/到达该方法?取消所需的属性有效吗?!?!
也许我已经在这太久了,因为除了字符串vs整数之外没有区别?如果需要整数,json的格式是否应该不同?任何人都可以对此有所了解吗?
Private _Status As String
<Required()>
Public Property Status As String
Get
Return _Status
End Get
Set(value As String)
If _Status <> value Then
_Status = value
OnPropertyChanged("Status")
End If
End Set
End Property
Private _DNNUserId As Integer
Public Property DNNUserId As Integer
Get
Return _DNNUserId
End Get
Set(value As Integer)
If _DNNUserId <> value Then
_DNNUserId = value
OnPropertyChanged("DNNUserId")
End If
End Set
End Property
答案 0 :(得分:0)
你可以尝试一下,看看它是否有效。
Public Class DTOStatusUpdate
Public Property QueryByNameDTO As QueryByNameDTO
Public Property Tests As ICollection(Of Test)
Public Sub New()
Me.Tests = New Collection(Of Test)
End Sub
End Class