首页 > 解决方案 > 为什么它没有使用 jquery.post() 在 asp.net mvc 控制器中检索发布的数据

问题描述

我正在使用用 VB.NET 编写的 ASP.NET MVC Web 应用程序。我尝试使用 jQuery 将数据发送到我的控制器。

这是我的控制器代码

<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');

这是我在浏览器中的开发者模式下的 请求我的请求详情 我的回复详情

来自 jQuery 的请求成功但问题在于响应我得到分配给我的 json 对象的空值

请帮忙 !

标签: jqueryjsonajaxasp.net-mvcvb.net

解决方案


经过一点测试,我相信你的问题与这个模型类的成员定义有关:

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

这两个变量都声明为字段,并且与字段不同,当从 JSON 请求传递字符串值时,操作方法可能无法识别Boolean该字段。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


推荐阅读