我对 MVC 和这种编程很陌生,我想这很简单,但经过 5 个小时的搜索和尝试,我感觉自己被打败了。我的 View 中有一个帖子,如下所示;
$.ajax({
url: '@Url.Action("Moo")',
type: "post",
dataType: "string",
contentType: "json",
data: JSON.stringify({"foo": "bar"}),
success: function (data) {}
});
});
然后我在 Controller 中有一个如下所示的函数;
Function Moo(test As String) As ActionResult
Return View()
End Function
当我运行它时,调试器显示我到达了 Return-statement,但我没有得到任何分配任何值的测试(foo:bar)。
我要考虑的另一个问题是,当我设法从 ajax 函数接收数据时,我可以将其转换回 JSON,还是必须在模型中创建自己的类并将变量分配给该类?
任何意见都会被采纳。
最佳答案
参数/属性名称应该匹配。
因此,如果您希望在操作中得到名称为 test
的值,则需要使用键 test
发送该值。因此将 foo
更改为 test
:
$.ajax({
url: '@Url.Action("Moo")',
type: "post",
dataType: "string",
contentType: "application/json",
data: JSON.stringify({"test": "bar"}),
success: function (data) {}
});
});
注意 JSON 的正确 contentType 是 application/json
如果您有更复杂的数据,例如 JSON.stringify({"test": "bar", "test1":"bar1"}),
您可以在服务器端创建一个对象(抱歉是 C#)
public class MyClass
{
public string test { get; set; }
public string test1 { get; set; }
}
然后您可以在您的操作中使用此模型:
Function Moo(test As MyClass) As ActionResult
Return View()
End Function
MVC 模型绑定(bind)器将解析数据并填充属性。您可以在此处开始了解模型绑定(bind):The Features and Foibles of ASP.NET MVC Model Binding
关于jquery - 我如何接收帖子 Values MVC3 (Jquery Ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556441/