<p>I'm creating an ASP.NET web site where all pages hang off a database-driven tree-hierarchy.  Pages typically present HTML content.  But, some will execute programming.</p>

<p><em>Examples:</em> <br></p>

<ol>
<li>a "contact us" form </li>
<li>a report generator</li>
</ol>

<p>How should I represent/reference the programming within the database?  Should I have a varchar value of a Web User Control (.ascx) name?  Or a Web Form (.aspx) name?  Something else?  Or should it just be an integer or other such ID in a dictionary within my application?</p>

<p>Can I make an ASP.NET Site Map Provider with this structure?</p>

<p>See more information here: <a href="https://stackoverflow.com/questions/56981/which-is-the-best-database-schema-for-my-navigation">Which is the best database schema for my navigation?</a></p>

Our development team has had success with defining the name of a Web User Control in the database. Upon page load it checks too see what controls to dynamically load from the database.
We use Web User Controls instead of Web Forms in order to ensure we can use the control on any page.
You can also dynamically build a site map using ASP.Net's provider.
CodeProject
has a good example.