我有正常的WebApi控制器,方法是:
public class ModelController : ApiController
{
public IEnumerable<Model> Get()
{
return service.Get();
}
public string Get(int id)
{
return service.Get(id);
}
public void Post([FromBody]MyViewModel value)
{
return service.Save(value);
}
public void Put(int id, [FromBody]MyViewModel value)
{
return service.Save(value);
}
public void Delete(int id)
{
return service.Delete(value);
}
}
我想将返回结果包装到自定义对象ServiceResult
中public class ServiceResult<T>
{
public bool IsError{ get; set; }
public T ObjectModel {get; set}
}
我想将所有控制器方法的返回类型更改为ServiceResult 这是一个例子:
public ServiceResult Post([FromBody]MyViewModel value)
{
service.Save(value);
//getting error here:
return new ServiceResult() { IsError= true, ObjectModel = value };
}
但是得到了错误
&#39; ObjectContent`1&#39;类型无法序列化响应正文 内容类型&#39; application / xml;字符集= UTF-8&#39;
键入&#39; Models.View.MyViewModel&#39;同 数据合同名称 &#39; MyViewModel://schemas.datacontract.org/2004/07/MyViewModel' 不是预期的。考虑使用DataContractResolver或添加任何 静态地知道已知类型列表的类型 - 例如, 通过使用KnownTypeAttribute属性或将它们添加到 传递给DataContractSerializer的已知类型列表。
你知道我该如何解决这个问题吗?
答案 0 :(得分:0)
您的ServiceResult对象需要一个类型参数,试试这个
return new ServiceResult<MyViewModel>() { IsError= true, ObjectModel = value };