我有一个 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 类更改为仅使用单数“测试”而不是列表(测试),它也可以工作。
问题似乎在于使用列表/集合/枚举(测试)。
我做错了什么,我已经在这工作了几个小时了,而且我的脑袋也在里面。我用谷歌搜索和搜索,转了一圈又一圈试图找到一个解释。我得到的最接近的是关于添加到然后到达方法和断点的参数但是参数的所有属性都没有?
我可以从 webapi 方法返回一个 IEnumerable(无论如何),那么我缺少什么来发送一个 webapi 方法?
EDIT1:将测试类剥离到一个可以正常工作的字段“id”,并重新构建它,我已将其缩小到该类中一个字段的一个属性。
这是测试类 Status 和 DNNUserId 中的两个字段。无论有无必需属性,状态都可以正常工作!但是,将 Required 属性添加到 DNNUserId 属性会导致方法不被调用/到达?取消所需的属性有效?!?!
也许我已经太久了,因为除了字符串和整数之外没有区别?如果需要整数,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