如何在路由中传递参数的同时反序列化请求体AsSingleObject?

时间:2012-03-14 16:09:31

标签: routes asp.net-mvc-4 asp.net-web-api

我有一个非常标准的路线,{controller}/{action}/{id},其中id是可选的。

考虑这三个PUT行动:

public void DoSimpleStuff(int id) {/*DoingStuff*/ }
public void DoMoreStuff(StronglyTypedObject sto) {/*DoingStuff*/ }
public void DoExtraStuff(int id, StronglyTypedObject sto) {/*DoingExtraStuff*/ }

DoSimpleStuff开箱即用。

要使DoMoreStuff工作,我需要disable the model binder。所以我实现了一个返回IRequestContentReadPolicy的自定义RequestContentReadKind.AsSingleObject

然而,这并没有修复DoExtraStuff。

所以我的问题是,我该怎么做来修复DoExtraStuff?该路由不应该理解只有最后一个参数来自内容,因此将该类型传递给我的序列化器吗?

PS:我意识到他们会改变这项工作的方式,但我现在需要一个解决方案。创意答案赞赏。

1 个答案:

答案 0 :(得分:0)

在asp.net mvc 4 beta中,这很难做到。事实上,我不得不解决它,因为我没有找到方法(如果有的话)来实现这一目标。

但是,在asp.net mvc 4 rc中,您只需将[FromBody][FromUrl]属性应用于您的操作参数,就可以了。太好了! :)