ASP.NET MVC,JSON发布到控制器操作FormCollection参数
问题描述:
我有一堆主要用于保存数据到后端存储的控制器操作。现在大多数人使用这样的签名:ASP.NET MVC,JSON发布到控制器操作FormCollection参数
//
// 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?
例如没有问题(当然我构建JSON对象在我的JavaScript客户端将其传递到这个行动)这项工作:
//
// POST: /WidgetZone/Create
[JsonPox]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string id, string description)
这是所有关于回传UI转换成异步的任务一个,所以保存和更新将被完成异步。我在正确的轨道上吗?我认为开发独立的Json,XML或经典的ViewResult操作并不是最好的方法。
帮助理解
答
该过滤器是基于所述操作方法,以便执行以JSON或XML序列化返回模型后运行该所述OnActionExecuted方法。作为行动方法的输入并不重要。一旦动作完成执行,过滤器将查找存储在ViewResult中的模型,并根据请求中传递的Content-Type头将其序列化。
怎么回传反馈?例如,如果没有异常,我想返回“创建成功”,如果出现错误,我想返回“创建失败”。 在控制器内部,我使用ViewData [“Message”] =“Success”执行操作,然后在视图本身中访问ViewData。 如何使用Json返回此文本?我应该添加额外的属性到我的模型类吗?例如,属性LastActionResult WidgetZone类?然后返回创建的对象Json序列化,这个属性也将被包含。 ?? – mare 2009-11-13 15:41:14
是的,你需要添加一个属性到你的模型,因为过滤器只会序列化模型的内容,而不是你在ViewData中的内容。 – 2009-11-13 16:29:52