Im posting data to an actin using the $.ajax method in jquery, specifying the data to be posted using the data field to pass the JSON stringified values.
These are posted to the action OK but I cant get them in an OnActionExecuting action filter (they're not part of the Forms or Params collections). Is there any way to get them and if not, could you tell share why not?
If your action takes a model:
[HttpPost]
public ActionResult About(SomeViewModel model)
{
return Json(model);
}
you could directly this parameter value because the JsonValueProviderFactory would have parsed it already:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
SomeViewModel model = filterContext.ActionParameters["model"] as SomeViewModel;
}
If there is no model (why wouldn't there be?) you could read the 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();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With