Вам не нужно использовать метод CreateJSONObj
или свойство jsonModel
в вашей модели. Чтобы использовать его в представлении, вы можете просто использовать класс JavaScriptSerializer , который преобразует объект модели на стороне сервера в объект javascript:
<script type="text/javascript">
var jsModel = @Html.Raw(new JavaScriptSerializer().Serialize(Model));
$.ajax({
url: '@Url.Action("SetJSON", "Page")',
type: 'POST',
data: JSON.stringify(jsModel),
contentType: 'application/json; charset=utf-8',
success: function () {
$('#test').html('Saved').fadeIn();
},
error: function () {
$('#test').html('error');
}
});
</script>
Это успешно отправит модель на следующее действие контроллера:
[HttpPost]
public ActionResult SetJSON(Model model)
{
...
}
где класс Model
содержит всю необходимую информацию:
public class Model
{
public string Name { get; set; }
public IEnumerable<Item> Items { get; set; }
}
public class Item
{
public int Test { get; set; }
}
и контроллер:
public class PageController: Controller
{
// Used to render the view
public class Index()
{
var model = new Model
{
Name = "Test",
Items = new[]
{
new Item { Test = 1 },
new Item { Test = 2 },
}
};
return View(model);
}
// Used to handle the AJAX POST request
[HttpPost]
public ActionResult SetJSON(Model model)
{
...
}
}