为什么它没有通过jquerry.post()在ASP.NET MVC控制器中检索发布的数据

时间:2019-01-31 11:49:49

标签: jquery json ajax asp.net-mvc vb.net

您好,我正在通过vb.net使用网络应用mvc 我尝试将带有jQuery的数据发送到asp控制器 这是我的控制器代码

<HttpPost()>
    Function GetData(p As DataManager) As JsonResult
        'Dim user As New User
        'user.user_name = puser.user_name
        'user.isadmin = puser.is_admin
        Dim x As New List(Of DataManager)
        x.Add(p)
        Return Json(p, JsonRequestBehavior.AllowGet)
    End Function

然后这是我的DataManager类的数据模型

Public Class DataManager
    Public user_name As String
    Public is_admin As Boolean
End Class 

这是我发送数据的jQuery代码

$("#btn-valid").click(function () {
        var user = {
            user_name: 'test',
            is_admin: true
        }
        $.post("http://localhost:57069/Home/GetData/", user, function (data)
        {
            alert("data sent !!"+ data.user_name);
        },'json');

这是我在浏览器中以开发人员模式发出的请求 my request  details My response details

jquery的请求成功,但问题出在响应上,我得到分配给json对象的空值

请帮助!

1 个答案:

答案 0 :(得分:1)

经过一些测试,我相信您的问题与该模型类的成员定义有关:

Public Class DataManager
    Public user_name As String
    Public is_admin As Boolean
End Class 

两个变量都声明为字段,并且与Boolean字段不同,当从JSON请求传递字符串值时,action方法可能无法识别String字段。我尝试使用DataManager关键字将Property类中的所有成员设置为属性:

Public Class DataManager
    Public Property user_name As String
    Public Property is_admin As Boolean
End Class 

然后data响应在控制台检查期间包含此对象,指示正确分配了字符串属性:

data: {user_name: "test", is_admin: true}

因此,我得出结论,您需要字符串属性而不是模型类内部的字段来传递字符串值。

工作示例:.NET Fiddle

相关问题