One of the things in mvc3 that recently caught my eyes is built in json model binding support which I have recently used in my project and want to write about it today. JsonValueProviderFactory Class which do all the stuff regarding json model binding is now built-in in mvc 3 which was not in mvc2. To use it in mvc2 you have to register the JsonValueProviderFactory class in global.asax after referencing Microsoft.Web.Mvc from Mvc Futures Library . Here how the thing goes in mvc3
Model Class
public class Category
{
public string CategoryName { get; set; }
}
The Controller
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Category category )
{
string Cat = category.CategoryName;
var data = new { message = "ok" };
return Json(data);
}
The View
$(document).ready(function () {
$('#save').click(function () {
var CategoryName = { CategoryName: $('#CategoryName').val() };
$.ajax({
url: "/Category/Create",
data: JSON.stringify(CategoryName),
contentType: "application/json; charset=utf-8",
success: function (mydata) {
$("#message").html(mydata["message"]);
},
type: "POST",
datatype: "json"
});
return false;
});
});
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.EditorFor(model => model.CategoryName)
@Html.ValidationMessageFor(model => model.CategoryName)
}
For Model binding to work in Mvc2 Add JsonValueProviderFactory
in Global.asax after referencing Microsoft.Web.Mvc
in Global.asax after referencing Microsoft.Web.Mvc
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
}
Very cool - thanks for posting this. Very clear explanation.
ReplyDeleteGood posting. Keep it up!
ReplyDeletewhat is the purpose to use JSON Binding ?
ReplyDelete