ASP.Net tries to do both the server and client side (sometimes the programmer
doesn't even know if his C# code is actually going to be run on the server or
the client). Perl (and on this list mod_perl) takes care of the server side but
leaves the client side up to you.
I believe that's the grand strategy for C# developers. If they can write
code that can easily be ported from the web to (for example) a mobile
platform, it is a very good business strategy.
I think the OSS community is actually ahead of .Net in this regard since you
aren't tied to a particular back-end system. Choice does mean you need more
knowledge though. Start looking around and evaluate and pick one that suits your
needs.
I'm actually quite glad that we have two options (or more, in favour of
the Perl TIMTOWTDI mantra) of implementation a web-based application.
The ASP.NET way makes putting together an application quick and easy,
abstracting the details of client-server communication as much as
possible. This is aligned to the real-world scenario where too many
businesses expect 'instant applications' to respond to their new-fangled
ventures.
The we-do-purely-backend-stuff alternative that is modperl concentrates
on making the web app agile yet robust. To put it objectively, it is the
tradditional approach to writing web applications. It works, it's
proven, and there is good community and professional support for this
kind of framework.
Looking forward, I personally believe in the pervasiveness of the
dynamic and asynchronous interactivity between the client and the
browser. Module(s) that enable such features will be a milestone in
making modperl (and Perl itself) relavant in the ever changing web
landscape.