我必须实现一个我声明的方法:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = @"whatever")]
void MyMethod(InputContainer input);
其中InputContainer
被声明为DataContract
:
[DataContract(Namespace = "whatever")]
public class InputContainer : IExtensibleDataObject
{
//[DataMember]s inside
}
现在我的代码中有一个动作将被映射到该动作:
[HttpPost]
ActionResult MyMethod()
{
// How do I get the InputContainer object here?
}
我只看到使用ReadAsAsync()
的样本,这是对我想避免的另一个程序集的依赖。无论如何,我怀疑ReadAsAsync()
是一种我可以复制的辅助方法。
如何将DataContract
- 归因对象POST
添加到我的MVC3操作中?
答案 0 :(得分:0)
这不会开箱即用。如果我将InputContainer
类型的参数添加到我的操作中 - 它将被默认初始化,POST主体中的值将被忽略。
需要额外的布线from here。首先,需要IModelBinder
的实现来访问HTTP请求InputStream
并使用DataContractSerializer
反序列化对象。然后需要CustomModelBinderAttribute
的子类,它将从IModelBinder
实现返回上述GetBinder()
实现。让我们假装它被称为MagicAttribute
。完成所有这一切后,只需将属性添加到参数:
[HttpPost]
ActionResult MyMethod([Magic] InputContainer input)
{
}