C# 通用可序列化WebAPI MVC4
因此,我尝试对MVC4框架项目的所有WebAPI调用进行一般性返回 我遇到的问题是类型C# 通用可序列化WebAPI MVC4,c#,serialization,asp.net-web-api,C#,Serialization,Asp.net Web Api,因此,我尝试对MVC4框架项目的所有WebAPI调用进行一般性返回 我遇到的问题是类型对象无法轻松序列化 所以我们的回报结构是 [DataContract] class UiOutput { [DataMember("success")] public bool Success {get;set;}; [DataMember("success")] public object Data {get;set;}; } 这样,每次调用时,它都会返回成功与否以及数据。数
对象
无法轻松序列化
所以我们的回报结构是
[DataContract]
class UiOutput {
[DataMember("success")]
public bool Success {get;set;};
[DataMember("success")]
public object Data {get;set;};
}
这样,每次调用时,它都会返回成功与否以及数据。数据可以是一组模型或其他任何东西。显然,这在php
中是一项简单的任务,但我们没有做到:)
所以我从网站上读到我遇到的问题是,错误三
所以我想创建一个通用的超类来解决这个问题,除了它如何处理ViewModels数组
[XmlInclude(typeof(MyAwesomeViewModel))]
class SuperType { }
例子:
这将有助于回报
[DataContract]
class MyAwesomeViewModel {
[DataMember("awesome")]
public bool Awesome {get;set;};
[DataMember("viewModel")]
public string ViewModel {get;set;};
}
但是如果我有一个控制器想要返回MyAwesomeViewModel的数组
,那么我不知道该怎么办
我的意思是如果有一个控制器像
class MyAwesomeController : ApiController {
public UiOutput ByYear(int year) {
MyAwesomeViewModel[] models = Rep.GetByYear(year);
UiOutput output = new UiOutput();
output.success = true;
output.data = //Todo: Is there a way to overcome?
}
}
如果您想要一个通用的返回值,那么使用HttpResponseMessage并创建一个从HTTPContent派生的负载对象
class MyAwesomeController : ApiController {
public HttpResponseMessage ByYear(int year) {
MyAwesomeViewModel[] models = Rep.GetByYear(year);
return new HttpResponseMessage(statusGoesHere) { Content = GetUIContent(models) };
}
}
class UIContent : HttpContent {
...
}
如果我有任何不清楚的地方,请让我知道,我会马上编辑。TTP已经有了成功的状态码,没有必要在正文中重复。
class MyAwesomeController : ApiController {
public HttpResponseMessage ByYear(int year) {
MyAwesomeViewModel[] models = Rep.GetByYear(year);
return new HttpResponseMessage(statusGoesHere) { Content = GetUIContent(models) };
}
}
class UIContent : HttpContent {
...
}