You may need the following basic structure: Form, Field, FieldType. Each of them needs business objects and data tables, so you can store configurations for each field.
Most likely, you will need a field to set several properties (for example, required) so that you can track this independently for each field.
Then you need some kind of utility that can read the data level, and then for each field and field type know what type of control you need to do and how to add controls to the current page.
Using the asp: PlaceHolder tag on the main page allows you to dynamically add controls to this place owner using the form creation utility.
Finally, you will most likely want to create a style sheet with several classes for different parts of the created form, so that the client can customize fonts, spacing, etc. any table of controls that you create.
EDIT:
If the data entered on the form needs to be saved, you need to decide if you want to have a custom data level. You may have an empty database table in which you use ALTER TABLE scripts to allow the client to add columns to the database as needed, and then you can set which control is bound to which column. This mapping between the management column and the database will be critical to the proper storage of data.
Jay s source share