@Rob Jacobs has the right approach. Essentially this:
$scope.myHiddenElement = $("#ctl00_cphMainContent_hConsentDisagree").val();
Where your hidden element is:
<asp:HiddenField ID="hConsentDisagree" runat="server">
Or...
<input type='hidden' id='ctl00_cphMainContent_hConsentDisagree' value='whatever' />
EDIT
To Avoid breaking the spirit of AngularJs you could change the ASP.NET piece to something like this:
var hiddenField = new HtmlInputHidden();
hiddenField.Value = "myValue";
hiddenField.Attributes["ng-model"] = "my-hidden-field";
then it's just this in the controller:
$scope.my-hidden-field
EDIT Number 2
var hiddenField = new HtmlInputHidden {Value = "myValue", ID = "hiddenfield"};
hiddenField.Attributes.Add("ng-model","myhiddenfield");
myDiv.Controls.Add(hiddenField);
Does not seem to work... However this does:
$scope.myTest = $('#MainContent_hiddenfield').val();
Yeah... I know, it breaks the spirit of Angular but... sometimes you gotta just make it work. I don't have a better answer.