Yes, it's absolutely better to learn C# and .NET well before ASP.NET. It's the best to do the exercises on simple console-only application. You need to read the manual from the beginning to the end, without skipping any topics. Indicate what you don't understand well, and return back. It's most important to focus on fundamental topics, not on every small and specific API.
On the .NET, it's important to focus on understanding assemblies, assembly metadata (just the idea will be enough at first), the ideas on memory management, JIT, and then the universal type system. The understanding of the language should be first based on elementary things, such as types and instances, methods and parameters and parameter passing methods, references, reference vs value types and boxing. You need to keep an eye on relations between CLR and the language. Next step should be OOP, you will need really deep understanding of it.
When you basically know all about the language and deeply understand all of the above, you can comfortably move to more advanced topics, including UI, ASP.NET and more. You will need to learn how basically HTTP and Web work. Experience is some other server-side technology could be of a great help.
This is not really the strategy yet, but just some basic principles, such as:
focus of fundamentals, develop application with deep understanding of what you are doing, better less but better.
Now, just one idea on the strategy.
Start learning without any certain strategy. It's just fine. When you make a first pass on the wat along the language, platform and programming basics, then you can think about strategy and devise some preliminary plan. Make a next stage of learning. Rethink the strategy if you feel you need it.
Learning software development is iterative, exactly as well as the software development itself.
[EDIT]
Oh, I almost forgot. This is the most encouraging article every software developer should read:
Peter Norvig, Teach Yourself Programming in Ten Years,
http://norvig.com/21-days.html[
^] ;-).
—SA