【问题标题】:Umbraco rendering content using razor from api service that inherits UmbracoApiControllerUmbraco 使用 razor 从继承 UmbracoApiController 的 api 服务渲染内容
【发布时间】:2015-05-18 18:21:16
【问题描述】:

我创建了一个 umbraco api 控制器,它继承了 UmbracoApiController 类并返回项目列表。我还有另一个 umbraco 站点,它使用 razor 调用该 api url 并将内容呈现到页面上。我正在尝试以下方法:

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

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

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

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

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

这两个网站都在 Umbraco 版本 7.2.4 上运行。

【问题讨论】:

    标签: api razor umbraco


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      相关资源
      最近更新 更多