ASP.NET MVC,JSON使用FormCollection参数发布到控制器操作

时间:2009-11-13 15:30:00

标签: asp.net-mvc

我有一堆控制器操作,主要用于将数据保存到后端存储。目前大多数都使用这样的签名:

    //
    // POST: /WidgetZone/Create
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection collection)

如您所见,它接受FormCollection。这适用于经典用户视图。现在我想要JSON-启用这些操作。我使用JsonPox动作过滤器执行此操作:

    //
    // POST: /WidgetZone/Create
    [JsonPox]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection collection)

当动作需要FormCollection时,这会起作用吗?

例如这项工作没有问题(当然我在我的JavaScript客户端构建Json对象以将其传递给此操作):

    //
    // POST: /WidgetZone/Create
    [JsonPox]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(string id, string description)

所有关于将回发UI转换为异步UI的任务,以便保存和更新将完成异步。我是在正确的轨道上吗?我认为开发单独的Json,XML或经典的ViewResult操作并不是最好的方法。

帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

此过滤器基于OnActionExecuted方法,该方法在执行操作方法后运行,以便JSON或XML序列化返回的模型。您对行动方法的输入并不重要。一旦操作完成执行,过滤器将查找存储在ViewResult中的模型,并根据请求中传递的Content-Type标头对其进行序列化。