我创建了一个umbraco api控制器,它继承了UmbracoApiController类并返回了一个项目列表。我还有另一个umbraco站点,即使用剃须刀调用该api url并将内容呈现到页面上。我正在尝试以下方法:
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 url的内容,以便将结果呈现在剃刀中的页面上。
这两个站点都在Umbraco版本7.2.4上运行。
答案 0 :(得分: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")