However, MSIL is on the other side of your possibilities. With MSIL, you are probably not going to solve this as well.
IMO, you have a few options:
1. Use an ASPX form to generate controls at run-time. E.g. in Page_Load, you can do this:
Button myButton = new Button();
// Do something with the button
This injects the button control into the Controls collection of the PlaceHolder control. This is a trivial example, but much more is possible.
2. Use a database for dynamic stuff. Depending on your needs and requirements you may not need all this complicated stuff. Instead, design a smart database schema that can hold variable data. Presenting the data may be difficult though, but it all depends on what you are doing.
3. Use a client side UI (with ASP.NET forms) and server side code to create new ASPX pages on the fly. You could simp,y build up a complete string with the final code, and then write it to disk.
4. Alternatively, you can take a look at the System.CodeDom namespace that allows you to create and compile code on the fly. I haven't done much with it, other than play with it from an academic perspective, but it's an interesting technology.
But, personally, I don't think you need to go this complex route. I think with a smart design and UI, you can build flexible user interface that suits your needs, possible using option 1 to create controls on the fly.
Did you ever overcome the shock of hacking from this thread: http://p2p.wrox.com/topic.asp?TOPIC_ID=48504
Everyone is unique, except for me.
Author of ASP.NET 2.0 Instant Results
and Beginning Dreamweaver MX / MX 2004
Want to be my colleague? Then check out this post