PHP developers had more luck than Classic ASP developers. Between 2000 and 2010 a handful of PHP developer frameworks gained popularity amongst web developers (Zend, CakePHP, Symfony, Laravel, ...). Unlike the Classic ASP/ASP.NET way, these PHP frameworks were built with PHP, they did not want to replace it. And PHP ran on less expensive hosts and servers.
ASP/VBScript developers also needed a developer framework back in 2002. They did not need ASP.NET. A developer framework for ASP/VBScript should have taken care of various shortcomings in ASP/VBScript (better support for dealing with files - pdf, jpg, zip, etc), workarounds for known bugs or issues, facilitate code behind, become event-driven, bring a solution for the spaghetti-coding, improve coding habits, url-rewriting (MVC!), increase scalability and security. But that framework never happened.
Modern and popular web development frameworks like React, Django and Vue are also facilitating the so-called spaghetti-way of coding. It does not prevent those frameworks to gain a large following amongst both beginning and more experienced developers. Same was 100% true for Classic ASP back then. MicroSoft even re-introduced spaghetti-coding with Razor and Blazor. The truth is: spaghetti-coding works, and the kids just love it. Spaghetti-coding is a perfect start for young developers. They surely will take it further as soon as they build code that needs more layering and/or as soon as they're up to it.
By the time ASP.NET was stable (not before 2.0 in 2005), most talented developers had given up on .NET and went developing plug-ins for WordPress, Joomla or Drupal, or they developed one or the other social network. Using PHP.