2015-05-18 26 views
0

我有一個umbraco api控制器,我創建它繼承了UmbracoApiController類並返回項目列表。我還有另一個umbraco網站,它使用剃鬚刀來調用該api網址,並將內容呈現在網頁上。我正在嘗試以下操作:Umbraco使用Razor渲染內容從api服務繼承UmbracoApiController

dynamic xmlv = new DynamicXml(umbraco.library.GetXmlDocumentByUrl("http://myapiurl.com")); 

但它告訴我,它沒有正確形成,因爲它沒有任何xml節點在第一行。

我想知道是否有一種方法要麼使API的XML節點添加到API Web服務的開始,如下所示:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> 

或是否有另一種辦法可以我的api網址的內容,以便將結果呈現在我的剃鬚刀頁面上。

這兩個站點都在Umbraco 7.2.4版上運行。

回答

0

我想出了一個解決方案。我在剃刀局部視圖頁面上使用WebClient來調用api url,然後將內容反序列化爲它發送的確切模型。然後,我可以使用反序列化的對象遍歷所有新聞項目並將其顯示在頁面上。

這裏是我的代碼的示例:

@using System.Net; 
@using System.Text; 
@using System.Web.Script.Serialization; 
@using myapplicaiton.Models; 
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
@{ 
var contents = ""; 
using (WebClient webClient = new WebClient()) 
{ 
     webClient.Encoding = Encoding.UTF8; 
     contents = webClient.DownloadString(apiurl); 
} 
var serializer = new JavaScriptSerializer(); 
var newsItemsApiViewModel = serializer.Deserialize<NewsItemsApiViewModel>(contents); 
} 

我然後使用呈現在我的模板視圖我的局部視圖以下:

@Html.Partial("News")