c# - Umbraco SurfaceController - 无法获取 CurrentPage
问题描述
我有一个执行 Get 方法的 SurfaceController。当我尝试使用 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
...
}
}
}
解决方案
我认为您需要使用当前的 UmbracoContext。
Umbraco 有一些你可以使用的辅助方法。
你可以试试下面的代码:
UmbracoHelper helper = new UmbracoHelper(UmbracoContext.Current);
IPublishedContent content = helper.TypedContent(Node.getCurrentNodeId());
推荐阅读
- mongodb - Docker Compose MongoDB docker-entrypoint-initdb.d 不工作
- kubernetes - 为什么 kubernetes 需要有 2 个 coredns pod
- keras - 带有稀疏分类交叉熵的keras精确召回
- typescript - Restler 用黄瓜
- unity3d - 尝试在 Ubuntu 上自动编译 Unity 引擎项目
- javascript - 根据 json 属性值更改 amCharts XYCharts 列颜色
- python - 我在控制台中看不到情节
- python - 根据行和列对数据框求和
- javascript - 使用“aws-amplify”提交包含嵌套对象播放负载数组的 graphql 突变
- shell - 使用 xargs 将命令从 awk 传递到下一个命令