我使用 jquery 中的 $.ajax 方法将数据发布到 actin,并使用数据字段传递 JSON 字符串化值来指定要发布的数据。
这些已发布到操作,但我无法将它们放入 OnActionExecuting 操作过滤器中(它们不是 Forms 或 Params 集合的一部分)。有什么办法可以得到它们吗?如果没有,你能告诉分享为什么不吗?
如果你的行动采用模型:
[HttpPost]
public ActionResult About(SomeViewModel model)
{
return Json(model);
}
你可以直接这个参数值,因为JsonValueProviderFactory http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonvalueproviderfactory.aspx已经解析它了:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
SomeViewModel model = filterContext.ActionParameters["model"] as SomeViewModel;
}
如果没有模型(为什么没有?),您可以从请求流中读取 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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)