settembre 2010 - Post
L’imminente lancio di Windows Phone 7 e l’evento in live streaming sullo sviluppo di applicazioni per questi dispositivi e le opportunità per gli sviluppatori hanno risvegliato in molti un certo interesse per lo sviluppo mobile. Come molti sapranno il primo passo per pubblicare applicazioni per questo fantastico dispositivo è l’iscrizione al marketplace che di solito ha un costo di 75 euro + IVA. Dico di solito perchè per gli studenti l’iscrizione è completamente gratuita: basta iscriversi al programma DreamSpark, anch’esso gratuito.
Iscriversi al programma DreamSpark consta di pochi semplici passi:
1. Autenticazione mediante il proprio account istituzionale (per gli studenti della Federico II di Napoli ad esempio è l’account nome.cognome@studenti.unina.it oppure [prima lettera del nome].cognome@studenti.unina.it), lo stesso che usate per l’accesso al software dell’accademic alliance.
2. A questo punto si abiliterà la voce “Get Verified” sul quale dovrete cliccare.
3. Vi verrà presentata la videata di selezione della modalità di verifica, scegliete nell’ordine: Italy, Verify as a Student, Get Verified through my School e Continue.
4. A questo punto vi verrà richiesto di selezionate l’università di appartenenza, selezionatela dall’elenco e cliccate su Continua
5. Adesso dovrete indicate la vostra mail istituzionale e cliccate su Verify:
6. Controllate la casella dell’email specificata, dovrebbe arrivarvi una mail in cui vi viene indicato un codice di attivazione:
7. A questo punto riclicchiamo su Get Verified:
8. Questa volta scegliamo come metodo di verifica “I have an activation code”, incolliamo il codice di attivazione ricevuto via mail e clicchiamo su Verify:
Se tutto è andato a buon fine nella home page avrete le tre voci spuntate:
A questo punto siamo pronti per registrarci sul Marketplace all’indirizzo:
http://developer.windowsphone.com/Signup-Create-Account.aspx
Dopo aver cliccato su CREA ACCOUNT dobbiamo autenticarci con lo stesso account usato per DreamSpark. A questo punto accettiamo le condizioni contrattuali e continuiamo cliccando su AVANTI.
A questo punto scegliamo la nazionalità e come tipo di account STUDENTE:
Dopo avere compilato un form con delle informazioni di profilo e confermati i dati, vi dovrebbe arrivare una mail con un link di verifica che vi fornirà un messaggio di corretta verifica dell’indirizzo di posta elettronica.
Spero vi sia utile!
--Michele
Mi capita spesso orami di aggiungere alle mie textbox la funzionalità di autocompletamento che migliora notevalmente la user experience delle mie applicazioni. Aggiungere questa funzionalità con jQuery UI è davvero semplice, basta aggiungere lo script:
1: <script type="text/javascript">
2: $(function () {
3: var valori = ["Primo", "Secondo", "Terzo", "Quarto", "Quinto"];
4: $("#id_mia_textbox").autocomplete({
5: source: valori
6: });
7: });
8: </script>
Anche perchè con Asp.Net 4 è stata introdotta la possibilità di rendere statica la generazione dell’id dell’elemento input a partire da quello assegnato alla textbox da cui verrà generato, l’ormai famoso ClientIdMode:
1: <form id="form1" runat="server">
2: <div>
3: <asp:TextBox runat="server" ID="id_mia_textbox" ClientIDMode="Static" />
4: </div>
5: </form>
Aggiungiamo un po’ di riferimenti (tutto scaricabili dal sito di jQuery UI) ….
1: <link href="Styles/jquery-ui-1.8.4.custom.css" rel="stylesheet" type="text/css" />
2: <script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
3: <script src="Scripts/jquery-ui-1.8.4.custom.min.js" type="text/javascript"></script>
Ed ecco il risultato
Nel prossimo post vedremo come caricare quei valori da una fonte dati.
-- Michele
Una delle cose che rendono altissima la produttività di Asp.Net Web Forms è sicuramente la possibilità di usare i validatori, che in maniera rapida e indolore permettono di evitare il post di un form quando ci sono campi che non rispettano le nostre regole di validazione. Semplicemente trascinando un validatore sul form e impostando il controllo da validare vengono generati per noi i controlli javascript necessari alle nostre esigenze più comuni.
Chi mi conosce sa che odio usare il designer e preferisco sempre scrivere le pagine aspx in modalità source, quindi una prima cosa interessante mostrata anche dal nostro buon Alessandro durante un live meeting di DotNetCampania è la possibilità di farci aiutare a inserire il validatore. Digitando ad esempio la stringa requiredfieldvalidator subito dopo il controllo che vogliamo validare e a cui abbiamo dato un identificativo…
1: <form id="form1" runat="server">
2: <div>
3: <asp:TextBox runat="server" ID="MyTextBox" />
4: requiredfieldvalidator
5: </div>
6: </form>
… premendo il tasto TAB otteniamo, per la mia e spero la vostra gioia, il codice dell’elemento <asp:RequiredFieldValidator> con l’attributo ControlToValidate già impostato e il cursone posizionato sul testo selezionato del messaggio di errore da mostrare:
1: <form id="form1" runat="server">
2: <div>
3: <asp:TextBox runat="server" ID="MyTextBox" />
4: <asp:RequiredFieldValidator ErrorMessage="errormessage" ControlToValidate="MyTextBox"
5: runat="server" />
6: </div>
7: </form>
Completando il nostro form in modo che semplicemente modifichi il testo di una label con quello inserito nella textbox alla pressione di un pulsante, possiamo andare a implementare questa difficilissima logica business nell’handler del pulsante:
1: <form id="form1" runat="server">
2: <div>
3: <asp:TextBox runat="server" ID="MyTextBox" /><asp:RequiredFieldValidator ErrorMessage="Obbligatorio!"
4: ControlToValidate="MyTextBox" runat="server" />
5: <br />
6: <asp:Button ID="MyButton" Text="Invia" runat="server"
7: onclick="MyButton_Click" /><asp:Label
8: ID="MyLabel" Text="text" runat="server" />
9: </div>
10: </form>
1: protected void MyButton_Click(object sender, EventArgs e)
2: {
3: this.MyLabel.Text = this.MyTextBox.Text;
4: }
Tutto bene se non fosse per il fatto che purtroppo esistono scenari in cui javascript è disabilitato (spesso per le famose irragionevoli ragioni dei sistemisti delle intranet…), il che farebbe miseramente fallire la nostra logica di validazione. Purtroppo non c’è modo di evitare il post ma possiamo fare in modo che la logica di validazione imposta coni validatori continui a fare i suo dovere lato server con un semplice if sulla proprietà Page.IsValid:
1: protected void MyButton_Click(object sender, EventArgs e)
2: {
3: if (Page.IsValid)
4: {
5: this.MyLabel.Text = this.MyTextBox.Text;
6: }
7: }
E questo era per la serie: “lo so che per la maggior parte di voi è una banalità ma hai visto mai che qualcuno non lo sa…”
-- Michele
Dopo un lungo mese di vacanza in inghilterra si ricomincia pian piano con le attività, tra cui anche la nostra serie di post su asp.net cominciata un po’ di mesi fa. Oggi volevo illustrarvi il metodo ParseControl() di Page, in realtà della classe astratta TemplateControl da cui page eredita, molto utile nella costruzione dinamica di interfacce web.
Supponiamo di voler aggiungere dinamicamente una texbox ad un placeholder della nostra pagina aspx, la prima cosa che viene in mente di fare è instanziare la classe textbox e aggiungerla all’insieme dei controlli del placeholder:
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: Control c = new TextBox();
4: this.PlaceHolder1.Controls.Add(c);
5: }
possiamo fare la stessa cosa con il metodo ParseControl a partire da una stringa:
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: string textbox = "<asp:TextBox runat=\"server\" />";
4: Control c = Page.ParseControl(textbox);
5: this.PlaceHolder1.Controls.Add(c);
6: }
Chiaramente per questo esempio la prima soluzione è molto più comoda, proviamo con un esempio un po’ più complesso:
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: StringBuilder code = new StringBuilder();
4: code.Append("<div><table><tr>");
5: code.Append("<th>Nome: </th>");
6: code.Append("<td><asp:TextBox runat=\"server\" /></td>");
7: code.Append("</tr><tr>");
8: code.Append("<th>Cognome: </th>");
9: code.Append("<td><asp:TextBox runat=\"server\" /></td>");
10: code.Append("</tr><tr>");
11: code.Append("<th />");
12: code.Append("<td><asp:Button Text=\"Invia\" runat=\"server\" /></td>");
13: code.Append("</tr></table></div>");
14: Control c = Page.ParseControl(code.ToString());
15: this.PlaceHolder1.Controls.Add(c);
16: }
Se la stringa sorgente poi viene da una fonte esterna… l’utilità balza subito agli occhi! Chiaramente il parsing della stringa richiede il suo tempo e per riferirci al controllo l’unica è usare una FindControl(): non è una feature da usare indiscriminatamente ma è sicuramente molto utile.
--Michele