The “Visual” approach exemplified by the Microsoft line of tools leaves much to be desired in my experience, leading to spaghetti code too easily.
Spaghetti code is a primarily a function of the programmer, not the tools. This isn’t to say the tools don’t matter; they do; but the various competing tools each have their pros and cons, and it’s a bit glib to suggest the Microsoft stack is obviously behind here. ASP.NET MVC, which you can use for web development in C#, is quite orthogonality-friendly.
Spaghetti code is a primarily a function of the programmer, not the tools. This isn’t to say the tools don’t matter; they do; but the various competing tools each have their pros and cons, and it’s a bit glib to suggest the Microsoft stack is obviously behind here. ASP.NET MVC, which you can use for web development in C#, is quite orthogonality-friendly.