我正在利用 MVC4 中的 Web API 为我的 Web 服务提供一个简单的 API。[XmlType]
我已经阅读了关于在模型上使用,等的各种帖子,[XmlRoot]
以[XmlElement]
在根元素和包装每个实体的元素上设置自定义名称,但它们似乎都没有效果。API 总体上运行良好,但 XML 属性似乎没有效果,给我留下了不相关的元素名称。
我已经稍微简化了我的代码,以使示例更清晰,但这基本上是它的样子:
API控制器:
public class SomeController : ApiController
{
[HttpGet]
public List<MyViewModel> All()
{
return ApiProvider.All()
.Select(v => new MyViewModel
{
SomeId = v.SomeId
SomeValue = v.SomeValue
}).ToList();
}
}
我的视图模型:
public class MyViewModel
{
public int SomeId { get; set; }
public int SomeValue { get; set; }
}
当前的 XML 响应:
<ArrayOfMyViewModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/...">
<MyViewModel>
<SomeId>3</SomeId>
<SomeValue>My value</SomeValue>
</MyViewModel>
</ArrayOfMyViewModel>
所需的 XML 响应:
<CustomRootName xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/...">
<CustomEntityName>
<SomeId>3</SomeId>
<SomeValue>My value</SomeValue>
</CustomEntityName>
</CustomRootName>
我没有对我想使用的序列化程序或类似的东西进行任何配置更改。
我在这里遗漏了什么,或者为什么我不能更改元素的名称?是否有其他方法可以采取,或者我缺少一些必要的设置?