Umbraco 7 mvc, как получить идентификатор текущей страницы

У меня есть собственный контроллер для отправки сообщения. Поэтому мне нужно получить значение имени поля свойства и псевдонима = «электронная почта», это будет использоваться для отправки электронной почты.

этот код ниже работает

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

Однако проблема здесь в том, что если имя страницы изменится, URL-адрес изменится, и код сломается.

Итак, как я могу изменить приведенный выше код, чтобы получить текущий идентификатор страницы и вставить его здесь (???);?

Я думаю, что код должен быть примерно таким:

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

Любая помощь будет оценена


person KleberBH    schedule 21.04.2014    source источник


Ответы (2)


Ваше решение вызовет проблему, если у вас есть более 1 узла «Свяжитесь с нами» или ни одного. Тогда вы не знаете, какой из них будет получен.

(На самом деле это первый найденный в дереве узлов, но потом кто-то может изменить их порядок...)

Является ли ваш контроллер контроллером Surface? Вы можете просто сделать это:

IPublishedContent currentNode = Umbraco.TypedContent(CurrentPage.Id)
person antao    schedule 22.04.2014

Хорошо, я нашел решение для своего вопроса.

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

Надеюсь, это поможет кому-то с той же проблемой.

person KleberBH    schedule 22.04.2014