According to MSDN hidden fields section,
In order for hidden-field values to be available during page processing, you must submit the page using an HTTP POST command. If you use hidden fields and a page is processed in response to a link or an HTTP GET command, the hidden fields will not be available.
If I add a HiddenField control at design time and set a value in it at design time or in the Init event in ASP.NET, why would I not be able to read/process the value when a page is first requested?
How have you defined your hidden field?
You need to make hidden field as runat="server" like this:
Then you will be able to access this field on server even if it is Get request.