【问题标题】:Using GetGridHtml in a controller in Umbraco 10在 Umbraco 10 的控制器中使用 GetGridHtml
【发布时间】:2022-08-16 14:05:41
【问题描述】:

我在我的 umbraco 网站上制作了一个简单的 Api 控制器,它只是在一些节点中搜索一些属性并从 json 中的这些属性返回内容。 其中一个属性是 umbraco 网格。从技术上讲,这也是 json,我可以通过一些精细的 JObject 查询成功地获取内容。但是从视图方面可以访问为您执行此操作的“GetGridHtml”帮助函数。 所以我的问题是,我如何在控制器中实现这一点?我将节点作为 IPublishedContent 获得,它顺便具有该辅助函数,但它需要一个在此上下文中不可用的 IHtmlHelper。那我该怎么办?

        [HttpGet]
    [Route(\"api/myapp/version/\")]
    public IActionResult GetLatestMyAppVersion()
    {
        var releaseNote = _umbracoHelper.ContentAtXPath(\"//releaseNoteList\").First().Children().OrderByDescending(x => x.Value<DateTime>(\"releaseDate\")).First();
        var ver = releaseNote.Value<string>(\"myAppReleaseVersion\");
        var date = releaseNote.Value<DateTime>(\"releaseDate\");
        
        var desc = releaseNote.GetGridHtml(?????, \"mainContent\", \"Clean\"); // this is where IHtmlHelper is needed

        return Ok(new { Application = \"MyApp\", Version = ver, ReleaseDate = date.ToString(\"yyyy-MM-dd\"), Description = desc });
    }

    标签: asp.net-core .net-core umbraco .net-6.0


    【解决方案1】:

    如果你想在控制器方法中获取 Ihtmlhelper,我建议你可以在控制器构造方法中注入它,然后你可以在你的代码中使用它。

    更多细节,您可以参考以下代码:

    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IHtmlGenerator _htmlGenerator;
        private readonly IHtmlHelper _helper;
    
        public HomeController(IHtmlHelper helper, IHtmlGenerator htmlGenerator, ILogger<HomeController> logger)
        {
            _logger = logger;
            _helper = helper;
            _htmlGenerator = htmlGenerator; 
        }
    

    【讨论】:

      猜你喜欢
      • 2023-01-09
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多