JsonModelBinder.cs

40 lines | 1.066 kB Blame History Raw Download
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.Text;
using System.IO;
using System.Web.Mvc;

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace Learn_CSS.APP.Web.Models.ModelBinders
{
    public class JsonModelBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            return Bind(controllerContext, bindingContext);
        }

        private JObject Bind(ControllerContext controllerContext, ModelBindingContext bindingContext) 
        {
            var request = controllerContext.RequestContext.HttpContext.Request;
            var stream = request.InputStream;
            stream.Position = 0;

            string jsonText = "";

            StringBuilder stringBuilder = new StringBuilder();
            using (StreamReader reader = new StreamReader(stream)) 
            {
                jsonText = reader.ReadToEnd();
            }

            return (JObject)JsonConvert.DeserializeObject(jsonText);
        }

    }
}