form
の情報をWebMethod
に渡しています。目的は、UseInfo
オブジェクトにフォームからのデータを取り込み、NewUser
クラスに追加したいくつかのプロパティも、ajaxリクエストから渡されます。複数のオブジェクトをAjaxからWebMethodに渡す
入力パラメータとしてUserInfo
がある場合、オブジェクトはajaxポストの後に正常に移植されます。ただし、NewUserオブジェクトがある場合は、プロパティRelationship
のみが設定されますが、UserInfo
オブジェクトはNothingとして表示されます。
私が間違っていることは何ですか?クラスNewUser
に別の構造を与える必要がありますか?
NEWUSERクラス
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);
});
あなたのアプローチは、私がポイントに何をしたかです。しかし、私はフィールドの変更によって終わった:name = "UserInfo [Profile] [Cell]"。また、私は各フィールドclass = "myform"に別のクラスを追加しました。そして、次のようなフォームをシリアル化します:var frm = $( 'form .myform')。私のajax:data:frm – alwaysVBNET