JsonValueProvider在ASP.NET MVC3中不工作
在MVC3中将ViewModel绑定到json时遇到问题。我非常简单的代码如下JsonValueProvider在ASP.NET MVC3中不工作,json,asp.net-mvc-3,Json,Asp.net Mvc 3,在MVC3中将ViewModel绑定到json时遇到问题。我非常简单的代码如下 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% using (Html.BeginForm("Save", "Home")) {%> <p> Cat </p> <button id="clickMe"
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm("Save", "Home")) {%>
<p>
Cat
</p>
<button id="clickMe" type="submit">Click Me</button>
<% } %>
<script type="text/javascript">
$(function () {
$('form').submit(function () {
var cat = {
Age: 5,
Weight: 13.5,
Name: 'Fluffy'
};
$.ajax({
url: '/home/save',
type: 'post',
data: JSON.stringify(cat),
dataType: 'json',
contentType: 'application/json; charset=utf-8'
});
console.info(JSON.stringify(cat));
});
});
</script>
</asp:Content>
但是,当下面的viewmodel进入下面的action方法时,它的所有属性都将取消设置
public class Cat
{
public int Age { get; set; }
public double Weight { get; set; }
public string Name { get; set; }
}
[HttpPost]
public ActionResult Save(Cat form)
{
return View();
}
我已经验证了当应用程序启动时,JsonValueProviderFactory已在工厂中注册。我肯定我错过了一些难以置信的简单的东西,有人能解释一下吗
提前谢谢。这应该行得通。请不要忘记通过返回false取消默认表单提交:
$('form').submit(function () {
var cat = {
Age: 5,
Weight: 13.5,
Name: 'Fluffy'
};
$.ajax({
url: this.href,
type: this.method,
data: JSON.stringify(cat),
dataType: 'json',
contentType: 'application/json; charset=utf-8'
});
return false;
});
您还指定了数据类型:“json”
,因此请确保控制器操作返回json:
[HttpPost]
public ActionResult Save(Cat form)
{
return Json(new { message = "success" });
}
就这样!我错过了js结尾的“返回错误”。感谢您提供有关从操作返回JSON的提示。
[HttpPost]
public ActionResult Save(Cat form)
{
return Json(new { message = "success" });
}