【问题标题】:Umbraco 7 mvc how to get current page idUmbraco 7 mvc如何获取当前页面ID
【发布时间】:2014-04-21 22:23:05
【问题描述】:

我有一个自定义控制器来发送消息。所以我需要获取属性字段名称和别名=“电子邮件”的值,这将用于发送电子邮件。

下面的代码有效

 var id = umbraco.uQuery.GetNodeByUrl("/contact-us");
 IPublishedContent root = Umbraco.TypedContent(id.Id);
 return root.GetProperty("email", true).Value.ToString();

但是这里的问题是,如果页面名称更改,则 url 会更改并且代码会中断。

那么如何更改上面的代码来获取当前页面id并插入到这里(???);?

我认为代码应该是这样的:

 IPublishedContent root = Umbraco.TypedContent(???);
 return root.GetProperty("email", true).Value.ToString();

任何帮助将不胜感激

【问题讨论】:

    标签: asp.net-mvc umbraco umbraco7


    【解决方案1】:

    如果您有超过 1 个“ContactUs”节点,或者没有,您的解决方案将带来问题。然后你不知道会得到哪一个。

    (实际上是在节点树中找到的第一个,但后来有人可以更改它们的顺序...)

    您的控制器是 Surface 控制器吗?你可以这样做:

    IPublishedContent currentNode = Umbraco.TypedContent(CurrentPage.Id)
    

    【讨论】:

      【解决方案2】:

      好的,我找到了我的问题的解决方案。

      var nodes = umbraco.uQuery.GetNodesByType("ContactUs");
      if (nodes.Any())
      {
         IPublishedContent node = Umbraco.TypedContent(nodes.First().Id);
         return node.GetProperty(property, true).Value.ToString();
      }
      

      希望这能帮助遇到同样问题的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-27
        • 1970-01-01
        • 2020-06-24
        • 2018-06-14
        • 2011-07-15
        • 2019-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多