Esistono diversi campi calendario utilizzabili in C#. Se ne trovano Javascript, Bootstrap e Ajax.
La soluzione proposta consiste nella trasformazione di una TextBox in un campo calendar (DatePicker) utilizzando Bootstrap.
Innanzitutto occorre inserire all’interno dell’header del programma aspx i riferimenti a Bootstrap, a jQuery e al DataPicker.
Bootstrap, jQuery e Bootstrap.Datepicker possono essere scaricati utilizzando NuGet (scelta consigliata).
<head>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" />
<script type="text/javascript" src="jQuery/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.bundle.min.js"></script>
<link href="bootstrap-datepicker3.css" type="text/css" rel="stylesheet" />
<script src="bootstrap-datepicker.min.js"></script>
<script src="locales/bootstrap-datepicker.it.min.js"></script>
</head>
Sempre all’interno del tag Head occorre definire a quale TextBox deve essere associato il DataPicker.
Per tutte le informazioni riguardanti i parametri, leggere la documentazione ufficiale all’indirizzo https://bootstrap-datepicker.readthedocs.io/en/latest/
<script>
$('[id$=DataDiNascita]').datepicker({
maxViewMode: 3,
clearBtn: true,
language: "it",
todayHighlight: true
});
</script>
All’interno del tag body sarĂ possibile definire il campo TextBox abbinato a una RegularExpressionValidator per evitare l’inserimento di caratteri non corretti
<asp:TextBox ID="DataDiNascita" runat="server" class="form-control" autocomplete="off">
</asp:TextBox>
<asp:RegularExpressionValidator Display="Dynamic" ForeColor="Red" SetFocusOnError="True" ID="revDataDiNascita" ControlToValidate="DataDiNascita" Text="Data non valida" ValidationExpression="(((0|1)[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d\d))$" runat="server" />