【发布时间】:2019-01-31 13:40:30
【问题描述】:
我知道这个问题已经在 Stakoverflow 中被问过多次。但是没有一个解决方案对我有帮助。谁能告诉我做错了什么
我有一个控制器动作如下
<HttpPost()>
Function WFUserEdited(ByVal userdetails As userdetails) As ActionResult
Return View()
End Function
我的 Viewmodel 如下所示
Public Class userdetails
Public Property Username As String
Public Property Password As String
Public Property Fullname As String
Public Property Location As String
Public Property Appcode As String
Public Property Userlevel As String
End Class
我的 Jquery Ajax 调用如下所示
$("#btnSubmit").click(function () {
var q = validate();
if (q = true) {
var userdetails = {};
userdetails.UserName = $('#txtusername').val().toString();
userdetails.Password = $('#txtPassword').val().toString();
userdetails.Fullname = $('#txtfullName').val().toString();
userdetails.Location = $('#txt_location').val().toString();
userdetails.Appcode = $("#drp_appcode").chosen().val().toString();
userdetails.Userlevel = $("#drp_userlevel").chosen().val().toString();
userdetails = JSON.stringify(userdetails);
var url = '@Url.Action("WFUserEdited", "WFUser")';
$.ajax({
url: url,
type: 'POST',
traditional: false,
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: { "userdetails": userdetails },
success: function (data) {
},
error: function (data) {
}
});
}
});
});
在 Beginexecutecore 我得到以下异常
Protected Overrides Function BeginExecuteCore(callback As AsyncCallback, state As Object) As IAsyncResult
Try
ViewBag.UserImage = "http://_layouts/15/CaptarisWFTasksWebPart/EmployeeImages/sree.jpg"
Catch generatedExceptionName As Exception
Return MyBase.BeginExecuteCore(callback, state)
End Try
Return MyBase.BeginExecuteCore(callback, state)
End Function
System.Web.Mvc.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理 附加信息:无效的 JSON 原语:userdetails。
【问题讨论】:
-
您已经对
userdetails进行了字符串化,所以它只是data: userdetails(或更简单——只需删除userdetails = JSON.stringify(userdetails);行和contentType: "application/json; charset=utf-8",选项,然后使用data: userdetails(和您的traditional: false,毫无意义,就像你所有的.toString()) -
你能不能把它作为答案,以便我可以接受,以便有人可以轻松使用它。同时,如果可能的话,你能建议我在哪里可以阅读这些 json 和 stingify +ajax 的东西跨度>
-
经过您的更正后它可以正常工作
标签: ajax asp.net-mvc vb.net razor