我正在利用MVC4中的Web API爲我的Web服務提供一個簡單的API。我已經閱讀了關於在模型上使用[XmlType]
,[XmlRoot]
,等在SO上的各種帖子來設置自定義名稱的根元素和元素包裝每個實體,但沒有一個似乎有任何效果。這個API在整體上運行良好,但是XML屬性似乎沒有效果,給我留下了不相關的元素名稱。使用Web 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();
}
}
MyViewModel:
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>
我並沒有配置更改想什麼串行我使用,或類似的東西。
我在這裏錯過了什麼,或者爲什麼我不能更改元素的名稱?是否還有其他方法需要採取,或者我缺少一些必要的設置?
感謝您的回覆!當然,這可能會起作用,至少對於根源而言。但是,它似乎可以治癒症狀而不是實際問題。另外,當我的API增長時,創建新的包裝類將會有點難以理解,只是爲了獲得正確的名稱。 –
好吧,就這樣放,這樣更有意義,謝謝!我會試一試。 –