A few suggestions from my own experience:
1. I ditched my belief that I can learn this stuff *correctly*... it implies
that there is only one way or only one best way to do something. This is
practically never the case. If it were, then you'd find well-documented and
agreed-upon methods. What you will find is lots of authors and organizations
which perpetuate this belief. It's a nice and lofty belief to have, but look
at their own code and practices and you'll find that they almost never
practice what they preach (case in point - what you mentioned of your
findings on Microsoft's recommendations). Alternatively, you'll find that
"best" is a moving target. What's best today is different than what was best
yesterday. Keep up only if/when it makes sense to.
2. I adopted a new belief that I could learn many ways to do practically any
given programming task. This is all much more of an art than a science (this
statement is true for web page design, web application programming, database
design, database programming, and network engineering... and all this stuff
that colleges teach as computer *science*). The very word *science* in
computer science perpetuates the popular belief that there is THE way or a
right way to do this - and there isn't. There are many ways to implement
this stuff. While there is definitely a scientific aspect to much of this,
the implementation is arguably much more of an art than a science.
3. When it comes to learning ASP.NET (to specifically answer your question),
I studied the ASP.NET Starter kits
(
http://www.asp.net/Default.aspx?tabindex=9&tabid=47), specifically the
Commerce starter kit first, and read a few books. The book by Dino
Esposito/Microsoft Press. It's the best book on the topic that I've found on
ASP.NET. Any non trivial ASP.NET Web application will almost certainly need
to interact with some database or other data store. Learn ADO.NET. David
Sceppa/Microsoft Press has the best book (IMHO) on ADO.NET.
4. Tackle specific tasks - and as you identify multiple potential solutions,
then go to the newsgroups to get other opinions. There's no substitute for
doing a real project. Just remember that as you do it, there is not going to
be a right way. Rather, come up with criterion that define what
implementation you want to live with (e.g., 1 - it has to be easily to
change because requirements often/always change after initial
implementation, 2 - it has to perform well (runtime execution speed has to
be fast, 3 - whatever is important to you).
5. Come up with a coding standard that you want to live with (e.g, variable
naming convention, class, object, database, table naming conventions). There
are a number of standards out there. Chose one and stick with it. What's
more important is to have a consistent naming convention (at least within a
project) than to come up with the best one - as there isn't.
Good Luck
Bob
MCSD, MCDBA, MCSA, MCSE