我对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)。
任何输入都是适用的。
答案 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'
以保持一致。