Para tutoriales puedes buscar en
www.lawebdelprogramador.com , seccion "cursos"
asp.NET maneja en efecto, 2 "capas" o interfaces, que finalmente se "integran" en una sola, generando la respuesta en el servidor, la gente de microsoft lo previo de una manera muy curiosa, tratando de hacer la analogia con sus "forms" de visual basic 6 (creo yo), pero enfocado a web, donde como sabras, no existe una comunicacion "en linea" de una pagina web vs una peticion al webserver, entonces, para esos "ires" y "venires" de los webrequest (lo que solicita el navegador) y los webresponse (lo que responde el servidor y envia al navegador, que finalmente es HTML), lo resolvieron con las 2 partes:
En la parte de CODIGO (el archivo .vb que se genera) , puedes poner programacion que sera ejecutada EN EL SERVIDOR, esto es codigo ASP.net, este codigo tiene acceso a todos los objetos del HTML (archivo .aspx) y puede por ejemplo: clarearlos, llenarlos, movelos, hacerlos visible... todo esto ANTES DE QUE SEA ENVIADA LA RESPUESTA EN EL NAVEGADOR, una vez finalizado el proceso en esta parte (backend o parte del servidor), el codigo final HTML ya MODIFICADO por lo que sea que se haya solicitado en el servidor, se GENERA y se envia a la web.
Por ejemplo:
en el html tu pones una etiqueta
HOLA1 <asp:TextBox ID="txtMunicipio" runat="server" CssClass="textbox_wider" MaxLength="70" Width="250px"></asp:TextBox> HOLA 2
y en el codigo .VB, por ejemplo en el "onload' pones:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
txtMunicipio.Text = "HOLA ESTE ES UN VALOR CARGADO DESDE EL SERVIDOR"
End Sub
El resultado final, que hacia el navegador llegara una simple etiqueta:
HOLA 1 <input type="text" name="xxx_nombre (este nombre de objeto se modifica x parte de .net" values="HOLA ESTE ES UN VALOR CARGADO DESDE EL SERVIDOR">HOLA 2