Ecco il codice. E' un controllo utente (un esercizio di controllo utente ) che non fa altro che scrivere l'ora e la data client.

NOTA: ti copio il codice funzionante tale e quale in Basic








orologio.ascx
codice:
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="orologio.ascx.vb" Inherits="sitae.orologio" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:Label id="lblOrario" runat="server" Font-Size="XX-Small" Font-Names="Tahoma" ></asp:Label>
Codebehind
codice:
Public Class orologio
    Inherits System.Web.UI.UserControl

#Region " Codice generato da Progettazione Web Form "

    'Chiamata richiesta da Progettazione Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents lblOrario As System.Web.UI.WebControls.Label

    'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
    'Non spostarla o rimuoverla.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
        'Non modificarla nell'editor del codice.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Inserire qui il codice utente necessario per inizializzare la pagina
        'If Me.lblOrario.Visible Then CreaScript() messo in prerender

    End Sub

    Private Sub CreaScript()
        Dim ClientID$ = Me.lblOrario.ClientID
        Dim CrLf$ = ""
        If Me.StessaRiga Then CrLf = "," Else CrLf = "
"
        Dim BoldData1$ = "", BoldData2$ = ""
        If Me.BoldData Then
            BoldData1 = ""
            BoldData2 = ""
        End If
        Dim BoldOra1$ = "", BoldOra2$ = ""
        If Me.BoldOra Then
            BoldOra1 = ""
            BoldOra2 = ""
        End If



        Dim script$ = ""
        script &= "<script>"
        script &= String.Format("function {0}_showclock()", ClientID)
        script &= "{"
        script &= "	var tempo = document.getElementById(""" & ClientID & """);"
        script &= "	var mesi = [""Gennaio"",""Febbraio"",""Marzo"",""Aprile"",""Maggio"",""Giugno"",""Luglio"",""Agosto"",""Settembre"",""Ottobre"",""Novembre"",""Dicembre""];"
        script &= "	var oggi = new Date();"
        script &= "	var anno = oggi.getFullYear();"
        script &= "	var mese = oggi.getMonth();"
        script &= "	var giorno = oggi.getDate();"
        script &= "	var ora = oggi.getHours() + """"; if(ora.length < 2) ora = ""0"" + ora;"
        script &= "	var minuto = oggi.getMinutes() + """"; if(minuto.length < 2) minuto = ""0"" + minuto;"
        script &= "	var secondo = oggi.getSeconds() + """"; if(secondo.length < 2) secondo = ""0"" + secondo;"

        'script &= "	var orologio = """ & BoldData1 & """ + giorno + "" "" + mesi[mese] + "" "" + anno + """ & CrLf & """ + """ & BoldData2 & """ + """ & BoldOra1 & """ + ora + "":"" + minuto + "":"" + secondo + """ & BoldOra2 & """ ;"
        script &= "	var orologio = """
        If Me.DataVisibile Then
            script &= BoldData1 & """ + giorno + "" "" + mesi[mese] + "" "" + anno + """
        End If
        If Me.OraVisibile Then
            If Me.DataVisibile = False Then CrLf = ""
            script &= CrLf & """ + """ & BoldData2 & """ + """ & BoldOra1 & """ + ora + "":"" + minuto + "":"" + secondo + """ & BoldOra2
        End If
        script &= """ ;"

        script &= "	tempo.innerHTML = orologio;"
        script &= "}" & vbCrLf

        script &= String.Format(";{0}_showclock();window.setInterval(""{0}_showclock()"", 1000);", ClientID)

        script &= "</script>"

        Me.Page.RegisterStartupScript(ClientID & "_showclock", script)

    End Sub





    Public Property label() As label
        Get
            Return Me.lblOrario
        End Get
        Set(ByVal Value As label)
            Me.lblOrario = Value
        End Set
    End Property



    Private _StessaRiga As Boolean = True 'default
    Public Property StessaRiga() As Boolean
        Get
            If Me.IsPostBack Then
                Dim j As Object = Me.ViewState("StessaRiga")
                If Not (j Is Nothing) Then
                    Me._StessaRiga = CBool(j)
                End If
            End If
            Return Me._StessaRiga
        End Get
        Set(ByVal Value As Boolean)
            Me._StessaRiga = Value
            'salvo il valore nel viewstate
            Me.ViewState("StessaRiga") = Value
        End Set
    End Property

    Private _BoldData As Boolean = False 'default
    Public Property BoldData() As Boolean
        Get
            If Me.IsPostBack Then
                Dim j As Object = Me.ViewState("BoldData")
                If Not (j Is Nothing) Then
                    Me._BoldData = CBool(j)
                End If
            End If
            Return Me._BoldData
        End Get
        Set(ByVal Value As Boolean)
            Me._BoldData = Value
            'salvo il valore nel viewstate
            Me.ViewState("BoldData") = Value
        End Set
    End Property


    Private _BoldOra As Boolean = False 'default
    Public Property BoldOra() As Boolean
        Get
            If Me.IsPostBack Then
                Dim j As Object = Me.ViewState("BoldOra")
                If Not (j Is Nothing) Then
                    Me._BoldOra = CBool(j)
                End If
            End If
            Return Me._BoldOra
        End Get
        Set(ByVal Value As Boolean)
            Me._BoldOra = Value
            'salvo il valore nel viewstate
            Me.ViewState("BoldOra") = Value
        End Set
    End Property

    Private _OraVisibile As Boolean = True 'default
    Public Property OraVisibile() As Boolean
        Get
            If Me.IsPostBack Then
                Dim j As Object = Me.ViewState("OraVisibile")
                If Not (j Is Nothing) Then
                    Me._OraVisibile = CBool(j)
                End If
            End If
            Return Me._OraVisibile
        End Get
        Set(ByVal Value As Boolean)
            Me._OraVisibile = Value
            'salvo il valore nel viewstate
            Me.ViewState("OraVisibile") = Value
        End Set
    End Property

    Private _DataVisibile As Boolean = True 'default
    Public Property DataVisibile() As Boolean
        Get
            If Me.IsPostBack Then
                Dim j As Object = Me.ViewState("DataVisibile")
                If Not (j Is Nothing) Then
                    Me._DataVisibile = CBool(j)
                End If
            End If
            Return Me._DataVisibile
        End Get
        Set(ByVal Value As Boolean)
            Me._DataVisibile = Value
            'salvo il valore nel viewstate
            Me.ViewState("DataVisibile") = Value
        End Set
    End Property


    Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
        If Me.lblOrario.Visible Then CreaScript()
    End Sub
End Class

test_orologio.aspx
codice:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test_orologio.aspx.vb" Inherits="sitae.test_orologio" %>
<%@ Register TagPrefix="uc1" TagName="orologio" Src="orologio.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
	<HEAD>
		<title>test_orologio</title>
		<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
		<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
		<meta name="vs_defaultClientScript" content="JavaScript">
		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
		<script language="JavaScript1.2">
	var n = (document.layers) ? 1:0;
	var ie = (document.all) ? 1:0;
	var layer=(n)?'layer':'div'

function dragObj(obj,nest){
	nest=(!nest) ? '':'document.'+nest+'.'										
    this.css=(n) ? eval(nest+'document.'+obj):eval('document.all.'+obj+'.style')		
    this.evnt=(n)? eval(nest+'document.'+obj):eval(obj);
	this.getLeft=b_getLeft;
	this.getTop=b_getTop;
	this.moveIt=b_moveIt;
	this.name=obj				
	return this
}
function b_moveIt(x,y){
	this.css.left=x
	this.css.top=y
}
function b_getLeft(){
  	x=(n)? this.css.left:this.css.pixelLeft
	return x
}
function b_getTop(){
  	y=(n)? this.css.top:this.css.pixelTop
	return y
}
function dragInit(){
	if(n) document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP)
	document.onmousedown=mdown
	document.onmouseup=mup
	document.onmousemove=mmove;
}
function mmover(num){
	oDrag[num].isOver=true
}
function mmout(num){
	oDrag[num].isOver=false
}
function mup(){
	for(var i=0; i<oDrag.length;i++){
		if(oDrag[i].isOver) {
			oDrag[i].drag=false
		}	
	}
}
function mdown(num){
	x=(n)?num.pageX:event.x
    y=(n)?num.pageY:event.y
	for(var i=0; i<oDrag.length;i++){
		if(oDrag[i].isOver) {
			oDrag[i].drag=true
			oDrag[i].clickedX=x-oDrag[i].getLeft()
			oDrag[i].clickedY=y-oDrag[i].getTop()
			cZIndex++
			oDrag[i].css.zIndex=cZIndex
		}
	}
}
function mmove(e){
	x=(n)?e.pageX:event.x
    y=(n)?e.pageY:event.y
	for(var i=0; i<oDrag.length;i++){
	if(oDrag[i].drag)
		oDrag[i].moveIt(x-oDrag[i].clickedX,y-oDrag[i].clickedY)
	}
}

function init(){
	dragInit()
	oDrag=new Array()
	oDrag[0]=new dragObj('divDrag0')
	//oDrag[1]=new dragObj('divDrag1')
	//oDrag[2]=new dragObj('divDrag2')
}
cZIndex=10


if(n || ie) onload=init;
		</script>
	</HEAD>
	<body MS_POSITIONING="GridLayout" style="BACKGROUND-COLOR: #ffffcc">
		<form id="Form1" method="post" runat="server">
			<uc1:orologio id="Orologio1" runat="server"></uc1:orologio>
			<div id="divDrag0" style="BACKGROUND-POSITION: 0% 0%; BACKGROUND-ATTACHMENT: scroll; LEFT: 100px; BACKGROUND-IMAGE: none; BACKGROUND-REPEAT: repeat; POSITION: absolute; TOP: 100px"
				language="JavaScript1.2" onmouseover="mmover(0)" onmouseout="mmout(0)">
				<uc1:orologio id="Orologio2" runat="server"></uc1:orologio>
			</div>
		</form>
	</body>
</HTML>
Codebehind
codice:
Public Class test_orologio
    Inherits System.Web.UI.Page
    Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
    Protected WithEvents Orologio1 As orologio
    Protected WithEvents Orologio2 As orologio

#Region " Codice generato da Progettazione Web Form "

    'Chiamata richiesta da Progettazione Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
        'Non modificarla nell'editor del codice.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Inserire qui il codice utente necessario per inizializzare la pagina
        Me.Orologio2.StessaRiga = False
        Me.Orologio2.BoldData = True
        Me.Orologio2.BoldOra = True
        'Me.Orologio2.OraVisibile = False
        'Me.Orologio2.DataVisibile = False


        Me.Orologio2.label.ForeColor = Color.Yellow
        Me.Orologio2.label.Font.Size = FontUnit.XXLarge
        Me.Orologio2.label.BackColor = Color.Red
        Me.Orologio2.label.BorderColor = Color.Black
        Me.Orologio2.label.BorderStyle = BorderStyle.Double
        Me.Orologio2.label.Style.Add("TEXT-ALIGN", "center")
        Me.Orologio2.label.Style.Add("width", "500px")

        'Me.Orologio1.Visible = False
        'Me.Orologio2.Visible = False
    End Sub

End Class