If your action takes a model:
[HttpPost] public ActionResult About(SomeViewModel model) { return Json(model); }
you could directly use this parameter value because JsonValueProviderFactory already parsed it:
public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); SomeViewModel model = filterContext.ActionParameters["model"] as SomeViewModel; }
If there is no model (why not?), You could read JSON from the request stream:
public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); filterContext.HttpContext.Request.InputStream.Position = 0; using (var reader = new StreamReader(filterContext.HttpContext.Request.InputStream)) { string json = reader.ReadToEnd(); } }
Darin Dimitrov
source share