How to alter a page's data On Save?

Member since: 2007

I have a "Meeting" pagetype extending EPiServer.TemplatePage.  A property defined for this pagetype is "MeetingDate" - set to a required value.

When an editor creates a Meeting I want to set the StopPublish property to be 6 months after whatever the editor set as the MeetingDate.

My initial expectation was that I could override the SavePage along the following lines: 

public override bool SavePage()
// set the stopPublish date to be MeetingDate + 6months
return base.SavePage ();

public override bool SavePage()


  // set the stopPublish date to be MeetingDate + 6months

... the code for doing that

return base.SavePage ();


But this method is not getting called when Save and Publish is invoked by the editor. 

I've read myself silly on this now and would appreciate clues on how to progress.  I have a feeling that I must latch on to EditPage class somehow.  

#49382 Mar 15, 2011 23:47
  • Member since: 2003

    I should mention that this is possible using Page Type settings in admin mode:
    Edit Page type --> On the Default values tab, check the "Use adjusted default settings..." and then set Stop Publish related to page creation date.

    However, If you want to do this by code, I need to know what version of EPiServer this is related to?

    #49393 Mar 16, 2011 8:58
  • Member since: 2002

    EPiServer 5 (haven't tried in 6):

    Hook up to the DataFactory.Instance.PublishingPage event in Application_Start in Global.asax.cs. 
    DataFactory.Instance.PublishingPage += new PageEventHandler(Your_Method_Name);


    In the method you create, you can do something like:

    PageData pd = e.Page.CreateWritableClone();
    pd.StopPublish = pd.StartPublish.AddMonths(6);
    DataFactory.Instance.Save(pd, SaveAction.Publish);

    #49401 Mar 16, 2011 10:22
  • Member since: 2008

    It is best if you attach your event handler using an InitializableModule, see

    #49415 Mar 16, 2011 13:11
  • Member since: 2007

    Thanks all.

    For others referencing this thread, sorry to have ommitted the details: EPiServer CMS6

    @Mari: thanks for that tip which I didn't know about.  I will investigate if it is possible to do it with my custom field for "MeetingDate" as it is not generally related to the creation date.


    #49428 Mar 16, 2011 20:41
  • Member since: 2002

    Take Ted's code example in the link from Magnus' post, and put my code in the CreatedPageHandler method.

    #49429 Mar 16, 2011 20:46
  • Member since: 1996

    In the publishing event you should not save the page, but just alter the property

    e.Page.StopPublish= e.Page.StartPublish.AddMonths(6);

    The saving of the page will be done by episerver

    #49430 Mar 16, 2011 21:37