Instead of mapping to unexisting controls, you can just read the bare POST:
this.Request.Form
This gives you a low-level key-value collection you can iterate over. The only small isue with web forms is that web forms is a paranoiac when it comes to security and posting to nonexisting controls will likely raise a validation exception. Just turn off validation for the page or write a custom request validator:
http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator(v=vs.110).aspx
Edit: as for your comment, your controls lack the name
property and thus their values are not sent to the server. Just make them have names.