Ich übermittle Informationen von meinem form
an meine WebMethod
. Das Ziel besteht darin, das UseInfo
-Objekt mit den Daten aus dem Formular aufzufüllen und auch einige Eigenschaften, die ich der Klasse NewUser
hinzugefügt habe, zu füllen, die auch von der Ajax-Anforderung übergeben werden.Mehrere Objekte von Ajax an WebMethod übergeben
Wenn ich als Eingangsparameter die UserInfo
habe, füllt das Objekt erfolgreich nach dem Ajax-Post. Wenn ich jedoch das NewUser-Objekt habe, wird nur die Eigenschaft Relationship
aufgefüllt, aber das Objekt UserInfo
erscheint als Nothing.
Irgendwelche Ideen, was ich falsch mache? Muss ich meiner Klasse eine andere Struktur geben? NewUser
?
NewUser Klasse
Public Class NewUser
Public Property UserInfo As UserInfo
Get
Return _UserInfo
End Get
Set(value As UserInfo)
_UserInfo = value
End Set
End Property
Private _UserInfo As UserInfo
Public Property Relationship As String
Get
Return m_Relationship
End Get
Set(value As String)
m_Relationship = value
End Set
End Property
Private m_Relationship As String
End Class
WebMethod
<HttpPost>
<ValidateAntiForgeryToken>
<DnnModuleAuthorize(AccessLevel:=SecurityAccessLevel.View)>
Public Function AddUserDependant(<FromBody> oNewUser As NewUser) As HttpResponseMessage
Try
If Me.UserInfo.IsInRole("Carer") Then
UsersControllerOmni.CreateDnnUser(oNewUser.UserInfo)
Return Request.CreateResponse(HttpStatusCode.OK)
Else
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "")
End If
Catch ex As Exception
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)
End Try
End Function
AJAX
$.ajax({
type: "POST",
cache: false,
url: serviceUrl + "/ModuleTask/AddUserDependant",
beforeSend: sf.setModuleHeaders,
contentType: "application/json; charset=utf-8",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $("form").serialize()
}).done(function (result) {
}).fail(function (xhr, result, status) {
alert(result);
});
Ihr Ansatz ist es, was ich an einem Punkt tat. Ich habe jedoch die Felder wie folgt geändert: name = "UserInfo [Profile] [Cell]". Außerdem habe ich für jede Feldklasse eine eigene Klasse = "myform" hinzugefügt und das Formular wie folgt serialisiert: var frm = $ ('form .myform'). Serialize(); mein Ajax: Daten: frm – alwaysVBNET