.net-core - 如何将 SurfaceController URL 添加到 Umbraco 服务器变量以从 Umbraco 9 中的自定义 Umbraco DataType 访问
问题描述
我正在将自定义 DataType 的代码从 U8 移植到 U9。
此 DataType 正在调用 Surface 控制器以检索一些数据。
在 Umbraco v 版本中,我从“Umbraco.Sys.ServerVariables”访问 URL,例如:
var apiUrl = Umbraco.Sys.ServerVariables['MainKey']['Controller1URL'];
我们在项目启动时将值设置为该变量,ServerVariablesParser.Parsing
例如:
// https://our.umbraco.com/documentation/extending/version7-assets 公共类 BackofficeControllersURLListRegistrator : IComponent { 公共无效初始化() { Umbraco.Web.JavaScript.ServerVariablesParser.Parsing += ServerVariablesParser_Parsing; } private void ServerVariablesParser_Parsing(object sender, Dictionary<string, object> e) { if (HttpContext.Current == null) throw new InvalidOperationException("HttpContext is null."); var backofficseUrls = new Dictionary<string, string>(); var url = new System.Web.Mvc.UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData())); backofficeseUrls.Add( "Controller1URL", url.GetUmbracoApiService<Controllers.ApiControllers.Test1Controller>(controller => controller.TestFunction()) ); e.Add("MainKey", backofficeseUrls); } 公共无效终止() { } }
如果存在,我们将如何在 Umbraco 9 中连接到 ServerVariablesParser Notification,以及如何检索 Controller 函数 URL,以便我可以像以前版本一样在 DataType JS 代码中检索它?
问题是针对 umbraco9,但我无法创建新标签...
解决方案
正如您所说,Umbraco 9 事件已重命名为通知。查看文档我看不到 ServerVariablesParser 通知。您能否不创建自定义通知(此处),使用 Dot peek 从 ServerVariablesParser 复制代码并实现您自己的事件?
推荐阅读
- c# - 如何完全按照从文件中读取的方式打印字符串?
- ruby-on-rails - 只有在使用 Ruby on Rails 上传时,Mime 类型文件检查才会失败
- java - 自下而上合并排序代码的语法错误。我该如何解决?
- c++ - 使用 csv 文件填充类数据,然后将节点添加到向量
- docker - 无法使用 docker-compose 运行两个 docker 容器。我收到错误:“python:无法打开文件 'app.py':[Errno 2] 没有这样的文件或目录”
- xslt - XSLT 1.0 (xsltproc) - 如何替换最后出现的字符?
- vue.draggable - 在 onAdd/onChange 事件之前钩子将删除的项目添加到列表中
- yaml - YAML: mixing inline with regular map for same object
- javascript - 如何在 d3.js v5 中实现点的防碰撞?
- javascript - Infinite loop while building mergesort in JavaScript