为什么MVC3不会绑定它(JSON)

时间:2013-01-28 07:53:27

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

我对MVC和模型绑定真的很新,所以我想我做了一些错误,我尝试绑定一些数据;

查看;

    $.ajax({
            url: '@Url.Action("Moo")',
            type: "post",
            dataType: "string",
            contentType: "application/json",
            data: JSON.stringify({"test": "bar", "test2": "bar2"}),
            success: function (data) {}       
    });

模型;

Public Class MyTestData

     Public Property test() As String
     Public Property test2() As String

End Class

控制器;

Function Moo(test As MyTestData) As ActionResult

    Return View()
End Function

当我运行dubugger时,我从控制器中的测试中恢复“无”,如果我只尝试一个字符串代码可以工作(视图中的数据更改为{(test:bar)}并且控制器数据类型已更改为从MytestData到String)。

任何输入都是适用的。

1 个答案:

答案 0 :(得分:3)

重命名您的动作参数。它被称为test并与您内部的test属性冲突:

Function Moo(model As MyTestData) As ActionResult
    Return View()
End Function

我猜你有太多的考试:-) FooBar似乎是一个更好的名字: - )

开玩笑说,你也遇到了dataType参数的问题。没有string这样的价值。使用ASP.NET MVC,您通常不需要提供它,因为框架正确设置了HTTP Content-Type响应头,jQuery将使用它来自动解析结果。因此,只需将其删除,或确保已将其指定为正确的值以匹配您的实际返回类型。由于您的操作会返回一个视图,因此您可以将其设置为dataType: 'html'以保持一致。