如何反序列化请求主体AsSingleObject,同时从路由传递参数



我有一个非常标准的路由,如{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工作,我需要禁用模型绑定器。所以我实现了一个自定义的返回RequestContentReadKind.AsSingleObjectIRequestContentReadPolicy

然而,这并不能修复DoExtraStuff。

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

附言:我知道他们会改变这个工作方式,但我现在需要一个解决方案。感谢富有创意的回答。

在asp.net mvc 4测试版中,这很难做到。事实上,我不得不绕过它,因为我没有找到实现这一点的方法(如果有的话)。

然而,在asp.net mvc 4 rc中,只需将[FromBody][FromUrl]属性应用于操作参数,就可以开始了。不错!:)

最新更新