ASP.net MVC 3 - 在OnActionExecuting中发布JSON数据

Ste*_*ard 6 asp.net-mvc json asp.net-mvc-3

我使用jquery中的$ .ajax方法将数据发布到肌动蛋白,指定要使用数据字段发布的数据以传递JSON字符串化值.

这些被发布到操作OK但我无法在OnActionExecuting操作过滤器中获取它们(它们不是Forms或Params集合的一部分).有没有办法得到它们,如果没有,你能告诉分享为什么不呢?

Dar*_*rov 11

如果您的操作采用模型:

[HttpPost]
public ActionResult About(SomeViewModel model)
{
    return Json(model);
}
Run Code Online (Sandbox Code Playgroud)

您可以直接使用此参数值,因为JsonValueProviderFactory已经解析了它:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    base.OnActionExecuting(filterContext);
    SomeViewModel model = filterContext.ActionParameters["model"] as SomeViewModel;
}
Run Code Online (Sandbox Code Playgroud)

如果没有模型(为什么不存在?),您可以从请求流中读取JSON:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)