I had the same issue. Worked fine locally, but an occasional production user would somehow submit the page with partial form data.
From the logging I could see the HttpRequestFormVariables looked normal up to a point, and then the values became blank, which resulted in the site throwing an unhandled exception.
ctl00$MainContentPlaceHolder$foo$rptForm$ctl01$txtFormFieldId = 3815
ctl00$MainContentPlaceHolder$foo$rptForm$ctl02$txtFormFieldId = 3816
ctl00$MainContentPlaceHolder$foo$rptForm$ctl03$txtFormFieldId = 3817
ctl00$MainContentPlaceHolder$foo$rptForm$ctl04$txtFormFieldId = 3818
ctl00$MainContentPlaceHolder$foo$rptForm$ctl05$txtFormFieldId =
ctl00$MainContentPlaceHolder$foo$rptForm$ctl05$txtFormFieldId =
The only way I've been able to reproduce it is to add some Javascript to the page to make it submit before fully loaded.
<script type="text/javascript">
$("input[id$='btnSubmit']").click();
</script>
I suspect I will need to send btnSubmit back from the server in the disabled state and then enable it from Javascript after the page has completed loading.
if (btnSubmit.Enabled)
{
btnSubmit.Enabled = false;
string script = "$(document).ready(function() {$(\"input[id$='" + btnSubmit.ClientID + "']\").removeAttr('disabled');});";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "EnableSubmitButton", script, true);
}