我有一个非常标准的路线,{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:我意识到他们会改变这项工作的方式,但我现在需要一个解决方案。创意答案赞赏。答案 0 :(得分:0)
在asp.net mvc 4 beta中,这很难做到。事实上,我不得不解决它,因为我没有找到方法(如果有的话)来实现这一目标。
但是,在asp.net mvc 4 rc中,您只需将[FromBody]
和[FromUrl]
属性应用于您的操作参数,就可以了。太好了! :)