I have the below code in my model to get the current page instance, it works fine on view of the page but on click of the publish button it returns the Site start page (which is causing the subsequent logic to fail.)
var currentPage = ServiceLocator.Current.GetInstance().Page;
NOTE : There are no logic on the publish event in the init module.
Any ideas why it would behavior like this?
As you mention "model" I guess you're using MVC? In that case the model is usually populated with the current page from the Controller, not containing any logic itself to determine the current page.
Could you give some more information about what you're trying to do and what your setup is?