2016-06-02 2 views
2

나는이에 대한 해결책 주변에 사냥 한을 사용하여 Umbraco 7 페이지에서 노드 속성을 업데이트 할 수 있지만, 버전 7면도칼

에 대해 아무것도 난 그냥 Umbraco에 날짜 속성을 업데이트 할 필요가 찾을 수있는 방법 7 노드. (발행일 아님) 그런 다음 umbra에게 페이지/업데이트 캐싱을 다시 게시하라고 지시해야합니다.

아래의 코드에서 개별 노드는 "항목"입니다. 항목에 checkbox 속성이 true로 설정되어 있으면 날짜가 1 년씩 증가해야합니다.

if(item.annual.ToString()=="True") 
{ 
    item.deadlineDate = item.deadlineDate.AddYears(1); 
} 

모든 모든 제안은 감사,

감사합니다, 데미안 홀리

답변

4

contentService의이 :-) https://our.umbraco.org/documentation/Reference/Management/Services/ContentService

그것으로, 당신은 저장하고 내용을 게시 할 수 있습니다 모두 당신의 친구입니다 환영합니다.

+0

죄송합니다, 저는 Umbraco의 멍청한 놈입니다.이 부분은 특별히 항목의 "deadlineDate"변수를 업데이트하는 것을 다루고 있습니까? 링크 된 페이지에서 객체 게시와 관련된 몇 비트를 발견했지만 업데이트는 필요 없습니다. – Slipoch

+0

Content 개체 (https://our.umbraco.org/documentation/Reference/Management/Models/Content)가있는 경우 item.SetValue ("deadlineDate", DateTime.Whatever)와 같은 속성을 업데이트 한 다음 저장하고 ContentService를 사용하여 게시하십시오. –

+0

contentservice를 사용하여 속성을 업데이트하는 것은 다음과 같습니다 (테스트되지 않음). var contentService = Services.ContentService; var content = contentService.GetById (item.Id); content.SetValue (deadlineDate, item.deadlineDate.AddYears (1)); contentService.SaveAndPublishWithStatus (content); – Mark

6

당신의 item 변수가 동적 가정하면, 먼저 관리 API 서비스의 ID를 전달해야합니다

var contentService = ApplicationContext.Current.Services.ContentService; 
var content = contentService.GetById(item.Id); 
content.SetValue("deadlineDate", item.deadlineDate.AddYears(1)); 
contentService.SaveAndPublish(content); 

이 값을 유지하고 다른 응용 프로그램에서 사용할 수 있도록합니다. 또한 관리자 사용자의 계정을 사용하여 업데이트되므로 감사 추적에 다른 것을 표시하려면 SaveAndPublish 메소드에 사용자 ID를 전달해야합니다.

마지막으로 Management API 뷰를 사용하는 데주의해야합니다. 프론트 엔드 사용자 작업으로 인해 데이터가 손실 될뿐만 아니라 쿼리 API (IPublishedContent 또는 DynamicPublishedContent)와 달리 ContentService이 항상 데이터베이스에 도달하므로 성능 문제가 발생할 수 있습니다.

편집 : 나는 같은 대답을 어느 정도 제공하는 Jannik's answer의 의견에 주목했습니다.

+1

환호, 감사합니다. – Slipoch