【发布时间】:2015-03-30 00:53:50
【问题描述】:
我有普通的 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 };
}
但得到错误
“ObjectContent`1”类型未能序列化响应正文 内容类型'应用程序/xml; charset=utf-8'。
键入“Models.View.MyViewModel” 数据合同名称 'MyViewModel://schemas.datacontract.org/2004/07/MyViewModel' 预计不会。考虑使用 DataContractResolver 或添加任何 已知类型列表中静态未知的类型 - 例如, 通过使用 KnownTypeAttribute 属性或将它们添加到 传递给 DataContractSerializer 的已知类型列表。
你知道我该如何解决这个问题吗?
【问题讨论】:
标签: c# asp.net-web-api asp.net-web-api2 asp.net-mvc-5.2