Umbraco 使用继承 UmbracoApiController 的 api 服务中的剃刀渲染内容

Umbraco rendering content using razor from api service that inherits UmbracoApiController

我创建了一个 Umbraco api 控制器,它继承了 UmbracoApiController class 和 returns 项目列表。我还有另一个 umbraco 网站,它使用 razor 调用 api url 并将内容呈现到页面上。我正在尝试以下操作:

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

但它告诉我它的格式不正确,因为它在第一行中没有任何 xml 节点。

我想知道是否有办法让 api 添加一个 xml 节点到 api 网络服务的开头,如下所示:

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

或者如果有其他方法我可以获得 api url 的内容,以便将结果呈现到我的 razor 页面上。

这两个站点都是 运行 Umbraco 版本 7.2.4。

我想出了一个解决方案。我在我的剃须刀部分视图页面上使用 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")