Umbraco SurfaceController - не удается получить CurrentPage - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть SurfaceController, который выполняет метод Get. Когда я пытаюсь получить доступ к текущей странице, используя this.CurrentPage, я получаю следующую ошибку

Не удается найти определение маршрута Umbraco в значениях маршрута, запрос должен быть сделан в контексте запроса Umbraco

Почему мой контроллер не может видеть текущую страницу?

{ используя Систему; использование System.Threading.Tasks; использование System.Web.Mvc; ... используя Umbraco.Web.Mvc;

public class BenefitStatementPdfSurfaceController : SurfaceController
{
    private readonly SelfServiceApiHttpClient _apiClient;

    public MySurfaceController(SelfServiceApiHttpClient apiClient)
    {
        _apiClient = apiClient;
    }

    [ActionName("MemberPdf")]
    [HttpGet]
    [Authorize]
    public async Task<ActionResult> MemberPdfAsync(int memberNumber, int selectedYear)
    {
        var content = await _apiClient
                                .MemberPdfAsync(memberNumber, selectedYear)
                                .ConfigureAwait(false);
        if (content.HasPdf)
        {
                return this.File(content.Pdf, "application/pdf", $"Statement{selectedYear}_{DateTime.Now:yyyyMMdd}_{DateTime.Now:HHmmss}.pdf");
        }

        var nodeId = this.CurrentPage.Id; ------ERRORS HERE
       ...
    }
}

}

1 Ответ

0 голосов
/ 17 сентября 2018

Я думаю, вам нужно работать с текущим UmbracoContext.

У Umbraco есть несколько вспомогательных методов, которые вы можете использовать.

Можете ли вы попробовать следующий код:

UmbracoHelper helper = new UmbracoHelper(UmbracoContext.Current);
IPublishedContent content = helper.TypedContent(Node.getCurrentNodeId());
...