2014-04-21 2 views
4

메시지를 보낼 사용자 지정 컨트롤러가 있습니다. 그래서 속성 필드 이름과 별칭 = "email"의 값을 가져야합니다.이 값은 전자 메일을 보내는 데 사용됩니다. 페이지 이름 변경, URL이 변경되고 코드가 침입 할 경우 여기에 문제가 그러나Umbraco 7 mvc 현재 페이지 id를 얻는 방법

이 코드는 다음과

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

작동합니다.

그래서 위의 코드를 변경하여 현재 페이지 ID를 얻은 다음 여기에 (???); 내 질문에 대한 해결책을 발견, 어떤 도움이

답변

2

이 좋아 apprecciated됩니다

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

:

나는 코드가 같은 것을해야한다고 생각합니다.

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

희망 사항은 동일한 문제가있는 누군가에게 도움이되기를 바랍니다.

9

두 개 이상의 'ContactUs'노드가 있거나없는 경우 솔루션을 사용하면 문제가 발생합니다. 그렇다면 당신은 어떤 사람이 될지 모릅니다.

이 컨트롤러 표면 컨트롤러 (... 실제로는 노드 트리에서 발견 된 첫 번째를하지만 그때 누군가가 그들의 순서를 변경할 수 있습니다)? 다음과 같이하면됩니다.

IPublishedContent currentNode = Umbraco.TypedContent(CurrentPage.Id)