我有一个非常标准的路由,如{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.AsSingleObject
的IRequestContentReadPolicy
。
然而,这并不能修复DoExtraStuff。
所以我的问题是,我能做些什么来修复DoExtraStuff?难道路由不应该理解只有最后一个参数来自内容,并因此将该类型传递给我的序列化程序吗?
附言:我知道他们会改变这个工作方式,但我现在需要一个解决方案。感谢富有创意的回答。
在asp.net mvc 4测试版中,这很难做到。事实上,我不得不绕过它,因为我没有找到实现这一点的方法(如果有的话)。
然而,在asp.net mvc 4 rc中,只需将[FromBody]
和[FromUrl]
属性应用于操作参数,就可以开始了。不错!:)