|
Pagine ASP.NET |
|
Accesso ai database con ASP.NET
La proprietà Page.IsPostBack
Uso dei parametri nelle pagine ASP.NET (comando Select e comandi di manipolazione)
|
|
Tre lezioni sulle pagine ASP (classiche) |
|
|
|
Errore: Per l'operazione è necessaria una query aggiornabile |
|
L'errore si ottiene con le pagine ASP nelle operazioni di manipolazione sui database. Occorre modificare le autorizzazioni del file di database (Windows XP Professional):
- Accedere come amministratore del computer.
- In Esplora risorse, individuare il file di database o la cartella contenente il database, fare clic con il tasto destro del mouse sul file o sulla cartella e selezionare Proprietà.
- Selezionare la scheda Protezione.
- Se la scheda Protezione non viene visualizzata:
Fare clic sulla voce Strumenti del menu, e quindi su Opzioni cartella .... Nella scheda Visualizzazione togliere il segno di spunta alla voce Utilizza condivisione file semplice(scelta consigliata). Fare clic quindi su OK. Tornare al punto 3.
- Se l'account IUSR_nomecomputer non è riportato nell'elenco Utenti e gruppi, fare clic sul pulsante Aggiungi.
- Nella finestra che si apre Selezione utenti o gruppi, fare clic sul pulsante Avanzate.
- Fare clic sul pulsante Percorsi e selezionare il nome del computer.
- Fare clic sul pulsante Trova.
Viene visualizzato un elenco di nomi di account associati al computer.
- Selezionare l'account IUSR_nomecomputer e fare clic su OK. Fare poi clic su OK per chiudere la finestra di dialogo.
- Per assegnare tutte le autorizzazioni all'account IUSR (Account Internet Guest), selezionare la casella di controllo Controllo completo e fare clic su OK.
- Attenzione: per le pagine ASP.NET l’utente da aggiungere si chiama ASPNET (ASP.NET Machine Account) per Internet Information Services 5.x e NETWORK_SERVICE per IIS 6.
Nell'ambiente di sviluppo Visual Web Developer l'errore non viene rilevato, perché viene aperto un Web server di test su una porta diversa dalla porta 80. In questo caso però le pagine ASP classiche vanno modificate come indicato di seguito.
|
|
Migrazione da ASP a ASP.NET |
|
In Visual Web Developer le pagine ASP classiche funzionano: occorre cambiare l'estensione in .aspx.
Per le pagine con accesso ai database con ADO sono necessarie alcune modifiche aggiuntive al codice:
- all'inizio della pagina inserire la clausola
<%@ Page ASPcompat=true %>
- nelle istruzioni di assegnazione togliere la parola chiave iniziale Set
- il metodo Open sulla connessione deve avere l'argomento tra parentesi:
conn.Open(strconn)
- Si deve operare un casting esplicito a stringa sui valori dei campi della tabella con il metodo ToString:
<% =rs.Fields(i).Value.ToString %>
Esempio: lettura della tabella Clienti di Northwind.mdb con ADO
|
|
Errore "Nome "__o" non dichiarato" |
|
Durante l'editing di pagine ASP.NET compare e scompare il messaggio di errore
Nome '__o' non dichiarato
(Name '__o' is not declared)
sulle istruzioni di visualizzazione con il segno =. Per esempio:
<% =rs.Fields(i).Value.ToString %>
anche se l'esecuzione della pagina non provoca poi alcun errore.
Una spiegazione dettagliata dell'origine dell'errore si può trovare nel blog di Mikhail Arkhipov.
La soluzione
consiste nell'inserire all'inizio della pagina una visualizzazione fittizia:
<% ="" %>
che ovviamente non produce nulla, ma elimina il messaggio di errore.
|
|
Form esterno e interno alla pagina ASP |
|
Una pagina HTML contenente un form passa normalmente i valori attraverso il metodo POST:
<form action="pagina1.asp" method="post">
<input type="text" size="20" name="cognome">
Il valore viene poi recuperato da pagina1.asp con
persona = Request.Form("cognome")
Può accadere che all'interno della pagina ASP ci sia un altro form per acquisire una scelta dell'utente che usa anch'esso il metodo POST. Per evitare la perdita del dato proveniente dalla pagina HTML si può passare la variabile con il metodo GET e lasciare il metodo POST per il form interno alla pagina ASP. Con il metodo GET però il valore viene recuperato con Request.Querystring:
persona = Request.querystring("cognome")
(attenzione: con il metodo GET i valori passati vengono visualizzati nell'URL della barra indirizzo del browser).
|
|
Controllo delle scelte dell'utente con checkbox |
|
La pagina HTML (scelte.htm)
<html>
<head>
<title>scelte</title>
</head>
<body>
<form action="controllo.asp" method="post">
fai una scelta oppure due scelte
<p>
<input type="checkbox" name="c1">Mattina</input>
<p>
<input type="checkbox" name="c2">Pomeriggio</input>
<p>
<input type="submit" value="Invia"></input>
<input type="reset" value="Annulla"></input>
</form>
</body>
</html>
La pagina ASP (controllo.asp)
<%
Dim scelta1, scelta2
scelta1=Request.Form("c1")
scelta2=Request.Form("c2")
if scelta1="on" then Response.Write("hai scelto la mattina")
%>
<p>
<%
if scelta2="on" then Response.Write("hai scelto il pomeriggio")
%>
<p>
<a href="scelte.htm">Torna alla pagina precedente</a>
prova qui |