If anyone is interested, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUI.asp?frame=true is the msdn section dealing with the System.Web.UI namespace.
My guess is that 80% of what's there is unnecessary to get the desired functionality. By chance or fate, 80% of what's there has no place in a perl implementation of similar functionality, because of the tools already available within perl. ------------------------------------------------------------------- I figure we would need to emulate the functionality of: System.Web.UI (as a base class, and defining certain constants). o System.Web.UI.Control (base class, inherited by all default and custom controls). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIControlClassTopic.asp?frame=true o System.Web.UI.ControlCollection (this functionality could be rolled into System.Web.UI.Control). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIControlCollectionClassTopic.asp?frame=true o System.Web.UI.IPostBackDataHandler & IPostBackEventHandler (inheritable interface that allows controls to handle how their postback data is handled). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIIPostBackDataHandlerClassTopic.asp?frame=true o System.Web.UI.Page (represents an .aspx file, and is used as a base class when creating a web forms class in codebehind mode). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIPageClassTopic.asp?frame=true o System.Web.UI.PageParser (parses .aspx files). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIPageParserClassTopic.asp?frame=true o System.Web.UI.TemplateBuilder (supports the PageParser in building a template and the child controls it contains). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUITemplateBuilderClassTopic.asp?frame=true o System.Web.UI.TemplateControl (inheritable base class. Provides the Page class and UserControl class a base set of functionality). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUITemplateControlClassTopic.asp?frame=true o System.Web.UI.UserControl (represents an .ascx file which implements and/or extends the TemplateControl class to produce some functionality or html). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIUserControlClassTopic.asp?frame=true o System.Web.UI.UserControlControlBuilder (Does a recursive descent into the sub-controls contained within a UserControl, building them as it goes, so that UserControls can contain other controls inside them). http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/h tml/frlrfSystemWebUIUserControlControlBuilderClassTopic.asp?frame=true ------------------------------------------------------------------- Let me make myself clear. I do not want to duplicate the entire ASP.NET thing in perl. I merely wish to skim the good stuff off the top and move along. In fact, there's more I dislike about ASP.NET than there is I *do* like about it. However, I recognize some things there that could save me loads of time on a large-scale project. Mason has some similar functionality with its *.mas components http://www.masonbook.com/book/chapter-1.mhtml#TOC-ANCHOR-3 but lacks the PostBack way of dealing with round-trip forms (as with server-side form validation). It also lacks the built-in ability to do things like append listitems to a <select> tag. _______________________________________________________________ John Drago | Chief Architect of Software Development E-com Media Group, Inc. [www.e-commedia.com] office :: 303.790.7940 x25 email :: [EMAIL PROTECTED] E - b u s i n e s s w i t h D i m e n s i o n TM | -----Original Message----- | From: Josh Chamas [mailto:[EMAIL PROTECTED] | Sent: Monday, March 15, 2004 5:19 PM | To: [EMAIL PROTECTED] | Subject: Re: .NET-style components and development | | John Drago wrote: | > | > What I want to do would look something like so: | > --------------------------------------------------------------- | > [listbox.asp] | > | > <asp:listbox id="list1"> | > <asp:listitem>Select One</asp:listitem> | > </asp:listbox> | > | > <% | > # Dynamically add items to the list before it's rendered: | > $Page->list1->Items->add( | > asp::listitem->new( Value => "1", Text => "Blue" ) ); | > $Page->list1->Items->add( | > asp::listitem->new( Value => "2", Text => "Red" ) ); | > | > # or, iterate through items within the listbox: | > foreach my $item ( $Page->list1->Items ) | > { | > if( $item->Value == 1 ) | > { | > $item->Text = "Blue [this is my favorite...isn't it yours?]"; | > }# end if() | > }# end foreach() | > | > %> | > --------------------------------------------------------------- | > | > Something tells me that this isn't too far away from what we already | > have with Apache::ASP...that with some extra methods inherited from | > a package subclassed by asp::listbox and asp::listitem, it is 100% | > possible. | > | > I would need some help with where to bless the $Page object into the | > namespace the ASP pages are executed in. | > | | If you set up a $List object in global.asa, it will be seen in | includes and scripts, but not in the scope of the XMLSubs packages. | So you might create it in the main package to reference from like | this: | | # global.asa | use vars qw($List); | sub Script_OnStart { | $List = $main::List = List->new(); | } | sub Script_OnEnd { | $List->can('DESTROY') && $List->DESTROY; | $List = $main::List = undef; | } | | Then in the script, you can: | | <% | $List->->add('list1', | ListItem->new( Value => "1", Text => "Blue" ) | ); | %> | | And then you can: | | <asp:listbox id="list1"> | <asp:listitem>Select One</asp:listitem> | </asp:listbox> | | And have XMLSubs defined to handle asp:listbox & asp:listitem | properly, looking at the $main::List object. | | If you really want to build objects through code though, you might | check out CGI.pm, which has plenty of methods for doing exactly this. | Output from a CGI.pm object should be compatible with Apache::ASP. | | > Apache::ASP does *almost* everything I want it to do, and this kind | > of extension would make it a lot more powerful in my opinion. | | What is the extension in particular that you are looking for? Is there | something particular about <asp:listbox /> handling that you like in | ASP.NET that you want implemented as is? Particularly what features | of ASP.NET do you think should make it into Apache::ASP ? | | Regards, | | Josh | | ________________________________________________________________________ | Josh Chamas, Founder | NodeWorks - http://www.nodeworks.com | Chamas Enterprises Inc. | NodeWorks Directory - http://dir.nodeworks.com | http://www.chamas.com | Apache::ASP - http://www.apache-asp.org | | | | | --------------------------------------------------------------------- | To unsubscribe, e-mail: [EMAIL PROTECTED] | For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]