У меня проблемы с привязкой ViewModel к json в MVC3. Мой очень простой код ниже ...
<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>
Строка console.info печатается в информационном окне Firebug, поэтому сценарий запускается в нужное время. Ожидаемый JSON также появляется в Firebug ...
Source
{"Age":5,"Weight":13.5,"Name":"Fluffy"}
Однако, когда представленная ниже модель представления входит в метод действия ниже, все ее свойства не устанавливаются ...
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 регистрируется на фабриках при запуске приложения. Я уверен, что упускаю что-то невероятно простое, кто-нибудь может пролить свет на это?
Заранее спасибо.