在Umbraco 10中的控制器中使用GetGridHtml



我在umbraco网站上制作了一个简单的Api控制器,它只需在一些节点上搜索一些属性,并在json中返回这些属性的内容。其中一个特性是本影栅格。从技术上讲,这也是json,我可以通过一些复杂的JObject查询成功地获得内容。但从视图的侧面看;GetGridHtml"为您执行此操作的helper函数。所以我的问题是,如何在控制器中实现这一点?我得到了一个名为IPublishedContent的节点,它附带了一个helper函数,但它想要一个在本文中不可用的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 });
}

如果你想在控制器方法中获得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; 
}

最新更新