I've been looking at this all weekend and haven't found the answer I was looking for. The problem is, after a postback history.go(-1); will not go back to where you want to go - that is, the page that got you there (with any changes made).
Using Request.UrlReferrer.ToString(); will reload the page you are going back to and you may be like me and not want to lose any changes that were made to the page. Above Rizwan Gill in 2013 hit on the answer that you want to go back 2, 3 or 4 pages but he didn't give a good way to do it.
The best way to do this is actually to use a pop-up modal for your page when it is called if your are writing the calling page but if you want to do it this way and have a back button you'll have to remember each postback and count them.
So, start with your hidden field (in your .aspx file) :
<asp:hiddenfield id="fldPostbackCount"
value="0"
runat="server"/>
Then increment the value with each postback (in your .aspx.vb file):
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
fldPostbackCount.Value = 1
Else
fldPostbackCount.Value = Int32.Parse(fldPostbackCount.Value) + 1
End If
End Sub ' Page_Load()
(I'm sure the .cs people can handle the to C conversion on this)
Now back to your .aspx file you have to have a history button:
<a href="javascript:history.go(-<%: fldPostbackCount.Value %>)" title="Back to Previous Page">Back to Previous Page</a>