If I redirect to a new page passing TempData to initialise the page it works fine, however if the user presses the refresh button in their browser the TempData is no-longer
You should write
TempData.Keep("nameofthedata");
in your controller, then it will keep that data in refresh situations too.