Procedura dettagliata: associazione ai dati a un oggetto business personalizzato

Aggiornamento: novembre 2007

Molte applicazioni Web vengono generate utilizzando più livelli, con uno o più componenti di livello intermedio per fornire l'accesso ai dati. Microsoft Visual Web Developer include una procedura guidata che consente di creare un componente di dati da utilizzare come oggetto dati di livello intermedio come descritto in Procedura dettagliata: pagine Web con associazione ai dati a un componente dati di Visual Studio.

È anche possibile, tuttavia, generare un oggetto business personalizzato, piuttosto che basarsi sul componente di dati creato dalla procedura guidata. La creazione di un oggetto business personalizzato consente di implementare la logica aziendale. In questa procedura dettagliata viene descritto come creare un oggetto business di base da utilizzare come origine dati per le pagine Web ASP.NET.

In particolare, vengono illustrate le seguenti operazioni:

  • Creazione di un componente che può restituire dati a una pagina Web e che utilizza un file XML per i propri dati.

  • Riferimento all'oggetto business come origine dati in una pagina Web.

  • Associazione di un controllo ai dati restituiti dall'oggetto business.

  • Lettura e scrittura di dati utilizzando l'oggetto business.

Prerequisiti

Per completare questa procedura dettagliata è necessario:

  • Visual Web Developer (Visual Studio).

  • .NET Framework.

Per questa procedura dettagliata si presuppone una conoscenza generale dell'utilizzo di Visual Web Developer.

Creazione del sito Web

Se è stato già creato un sito Web in Visual Web Developer (ad esempio, seguendo le procedure di Procedura dettagliata: creazione di una pagina Web di base in Visual Web Developer), è possibile utilizzare quel sito Web e passare alla sezione successiva, "Creazione di un file XML per i dati aziendali". In caso contrario, creare un sito e una pagina Web nuovi attenendosi alla procedura riportata di seguito.

Per creare un sito Web di file system

  1. Aprire Visual Web Developer.

  2. Scegliere Nuovosito Web dal menu File.

    Viene visualizzata la finestra di dialogo Nuovo sito Web.

  3. In Modelli Visual Studio installati, fare clic su Sito Web ASP.NET.

  4. Nella casella Percorso, immettere il nome della cartella in cui salvare le pagine del sito Web.

    Digitare, ad esempio, il nome cartella C:\WebSites.

  5. Nell'elenco Linguaggio scegliere il linguaggio di programmazione con lui lavorare.

  6. Scegliere OK.

    In Visual Web Developer vengono create la cartella e una nuova pagina denominata Default.aspx.

Creazione di un file XML per i dati aziendali

Nella procedura riportata di seguito, verrà creata un file XML per i dati dei componenti business.

Per creare il file XML

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse su App_Data, quindi scegliere Aggiunginuovo elemento.

    Nota:

    Accertarsi che il file XML venga creato all'interno della cartella App_Data. La cartella App_Data dispone di un set di autorizzazioni che consentono alla pagina Web di leggere e scrivere dati nel file XML.

  2. In Modelli Visual Studio installati fare clic su File XML.

  3. Nella casella Nome, digitare Authors.xml.

  4. Fare clic su Add.

    Viene creato un nuovo file XML contenente solo la direttiva XML.

  5. Copiare i dati XML riportati di seguito e incollarli nel file sovrascrivendo il contenuto presente nel file.

    Nel file XML sono presenti le informazioni relative allo schema che identificano la struttura del database dei dati, incluso un vincolo PRIMARY KEY per la chiave.

    Nota:

    I componenti business possono utilizzare i dati in qualsiasi modo valido per l'applicazione. Questa procedura dettagliata utilizza un file XML.

    <?xml version="1.0" standalone="yes"?>
    <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd">
    <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
        <xs:element name="dsPubs" msdata:IsDataSet="true">
          <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="authors">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="au_id" type="xs:string" />
                    <xs:element name="au_lname" type="xs:string" />
                    <xs:element name="au_fname" type="xs:string" />
                    <xs:element name="au_phone" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
          <xs:unique name="Constraint1" msdata:PrimaryKey="true">
            <xs:selector xpath=".//mstns:authors" />
            <xs:field xpath="mstns:au_id" />
          </xs:unique>
        </xs:element>
      </xs:schema>
      <authors>
        <au_id>172-32-1176</au_id>
        <au_lname>West</au_lname>
        <au_fname>Paul</au_fname>
        <au_phone>408 555-0123</au_phone>
      </authors>
      <authors>
        <au_id>213-46-8915</au_id>
        <au_lname>Gray</au_lname>
        <au_fname>Chris</au_fname>
        <au_phone>415 555-0120</au_phone>
      </authors>
    </dsPubs>
    
  6. Salvare il file Authors.xml e chiuderlo.

Creazione di un componente

Il passaggio successivo prevede la creazione di una classe per avere funzione di un componente business. Il componente verrà mantenuto nella cartella App_Code del sito Web. In un'applicazione reale è possibile registrare il componente in qualsiasi archivio adeguato, incluso la Global Assembly Cache. Se il sito Web non dispone già di una directory denominata App_Code, occorre crearla.

Per creare una cartella App_Code

  • In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del sito Web, scegliere Aggiungi cartella ASP.NET, quindi App_Code.

    Nota:

    Non è possibile scegliere un nome diverso da App_Code.

A questo punto è possibile aggiungere il componente al sito.

Per creare il componente business

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella App_Code, quindi scegliere Aggiungi nuovo elemento.

    Nota:

    Accertarsi che il nuovo elemento venga creato all'interno della cartella App_Code.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

  2. In Modelli Visual Studio installati fare clic su Classe.

  3. Nella casella Linguaggio scegliere il linguaggio di programmazione preferito.

  4. Nella casella Nome digitare BusinessObject.

  5. Fare clic su Add.

    In Visual Web Developer viene creato il nuovo file di classe e viene aperto l'editor di codice.

  6. Copiare il codice riportato di seguito e incollarlo nel file sovrascrivendo il contenuto presente nel file.

    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Web
    Imports System.Data
    Namespace PubsClasses
        Public Class AuthorClass
            Private dsAuthors As DataSet = _
                New System.Data.DataSet("ds1")
            Private filePath As String = _
               HttpContext.Current.Server.MapPath _
                   ("~/App_Data/authors.xml")
            Public Sub New()
                dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema)
            End Sub
    
            Public Function GetAuthors() As DataSet
                Return dsAuthors
                End Function
            End Class
    End Namespace
    
    using System;
    using System.Web;
    using System.Data;
    namespace PubsClasses
    {
        public class AuthorClass
        {
            private DataSet dsAuthors = new DataSet("ds1");
            private String filePath =
                HttpContext.Current.Server.MapPath
                    ("~/App_Data/Authors.xml");
            public AuthorClass()
            {
                dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema);
            }
            public DataSet GetAuthors ()
            {
                return dsAuthors;
            }
        }
    }
    
    Nota:

    Assicurarsi che il valore della variabile filePath faccia riferimento al nome del file XML creato in precedenza.

    Una volta creata un'istanza della classe è possibile leggere il file XML e convertirlo in un dataset. Il metodo GetAuthors della classe restituisce il dataset.

  7. Salvare il file. Per un funzionamento corretto occorre salvare il file per la sezione successiva.

Visualizzazione dei dati tramite il componente business

È ora possibile richiamare il componente business in una pagina Web e visualizzarne i dati. Per fare riferimento al componente, utilizzare un controllo ObjectDataSource progettato in modo specifico per gli oggetti.

Per creare un controllo ObjectDataSource che fa riferimento al componente

  1. Passare alla pagina Default.aspx oppure aprirla.

    Nota:

    Se non si dispone di una pagina Default.aspx, è possibile utilizzare una pagina diversa. In alternativa, è possibile aggiungere una nuova pagina al sito Web. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del sito Web e scegliereAggiungi nuovo elemento, quindi aggiungere un Web Form.

  2. Passare alla visualizzazione Progettazione.

  3. Trascinare un controllo ObjectDataSource dalla cartella Dati della Casella degli strumenti alla pagina.

  4. Nella finestra Proprietà impostare ID su AuthorsObjectDataSource.

  5. Fare clic con il pulsante destro del mouse sul controllo ObjectDataSource, quindi scegliere lo smart tag per visualizzare il menu Attività ObjectDataSource.

  6. Dal menu Attività ObjectDataSource, scegliere Configura origine dati.

    Viene visualizzata la procedura guidata Configura origine dati.

  7. Scegliere PubsClasses.AuthorClass dall'elenco Selezionare un oggetto business.

  8. Fare clic su Avanti.

  9. Scegliere GetAuthors(), returns Dataset, dall'elenco Selezionare un metodo della scheda Seleziona.

    Il metodo GetAuthors viene definito nella classe business creata in precedenza e restituisce un dataset contenente i dati del file Authors.xml.

  10. Fare clic su Fine.

    Le informazioni sulla configurazione che sono state immesse specificano che per ottenere i dati dal componente, è necessario chiamare il metodo GetAuthors del componente.

A questo punto è possibile ottenere i dati dal componente utilizzando il controllo ObjectDataSource. Verranno visualizzati i dati in un controllo GridView della pagina.

Per visualizzare i dati dal componente

  1. Trascinare un controllo GridView dalla cartella Dati della Casella degli strumenti alla pagina.

  2. Fare clic con il pulsante destro del mouse sul controllo GridView, quindi scegliere lo smart tag se il menu Attività comuni GridView non viene visualizzato.

  3. Dal menu Attività comuni GridView nella casella Scegli origine dati, fare clic su AuthorsObjectDataSource.

  4. Premere CTRL+F5 per eseguire la pagina.

    Il controllo GridView viene visualizzato con i dati XML contenuti all'interno.

Inserimento dei dati tramite il componente business

Analogamente ad altri controlli di origine dati, ad esempio il controllo SqlDataSource, il controllo ObjectDataSource supporta l'aggiornamento (inserimento, aggiornamento ed eliminazione). In questa sezione verrà modificato il componente business con un metodo che consente l'inserimento di un record autore. Successivamente verrà modificata la pagina in modo da consentire agli utenti di digitare nuove informazioni sull'autore e modificare il controllo ObjectDataSource per eseguire l'inserimento.

Nota:

Nel corso di questa parte della procedura dettagliata verrà aggiornato il file Authors.xml creato in precedenza. È importante che l'applicazione disponga dell'autorizzazione per scrivere nel file in fase di esecuzione, in caso contrario, quando si tenta di aggiornare il file, verrà visualizzato un errore nella pagina Web. Se il file Authors.xml file è stato creato nella cartella App_Data, le autorizzazioni vengono impostate automaticamente.

Per modificare il componente business in modo da consentire gli inserimenti

  1. Passare al file BusinessObject.

  2. Aggiungere il metodo riportato di seguito come membro Final di AuthorClass.

    Public Sub InsertAuthor(ByVal au_id As String, _
            ByVal au_lname As String, _
            ByVal au_fname As String, ByVal au_phone As String)
        Dim workRow As DataRow = dsAuthors.Tables(0).NewRow
        workRow.BeginEdit()
        workRow(0) = au_id
        workRow(1) = au_lname
        workRow(2) = au_fname
        workRow(3) = au_phone
        workRow.EndEdit()
        dsAuthors.Tables(0).Rows.Add(workRow)
        dsAuthors.WriteXml(filePath, Data.XmlWriteMode.WriteSchema)
    End Sub
    
    public void InsertAuthor (String au_id, String au_lname, 
        String au_fname, String au_phone)
    {
        DataRow workRow = dsAuthors.Tables[0].NewRow ();
        workRow.BeginEdit ();
        workRow[0] = au_id;
        workRow[1] = au_lname;
        workRow[2] = au_fname;
        workRow[3] = au_phone;
        workRow.EndEdit ();
        dsAuthors.Tables[0].Rows.Add (workRow);
        dsAuthors.WriteXml (filePath, XmlWriteMode.WriteSchema);
    }
    
    Nota:

    Prestare particolare attenzione ai nomi delle variabili utilizzate per passare informazioni sull'autore al metodo (au_id, au_lname, au_fname e au_phone). Devono corrispondere ai nomi delle colonne definiti nello schema del file XML creato in precedenza.

    Il nuovo metodo accetta quattro valori da inserire, che verranno forniti nella pagina come parametri, e crea una nuova riga nel dataset, quindi consente di riscrivere il dataset aggiornato come un file XML.

  3. Salvare il file.

Il passaggio successivo consiste nella modifica della pagina in modo da consentire agli utenti di immettere nuove informazioni sull'autore. Nella procedura riportata di seguito, verrà utilizzato il controllo DetailsView.

Per aggiungere un controllo relativo all'inserimento dei dati

  1. Passare alla pagina Default.aspx oppure aprirla.

  2. Passare alla visualizzazione Progettazione.

  3. Trascinare un controllo DetailsView dalla cartella Dati della Casella degli strumenti alla pagina.

    Nota:

    Il layout esatto della pagina non è importante.

  4. Dal menu Attività DetailsView nella casella Scegli origine dati, fare clic su AuthorsObjectDataSource.

    Nota:

    Se il menu Attività DetailsView non è visibile, scegliere lo smart tag.

  5. Nella finestra Proprietà impostare AutoGenerateInsertButton su true.

    In tal modo si consente al controllo DetailsView di eseguire il rendering di un pulsante Nuovo che gli utenti possono selezionare per impostare il controllo in modalità di immissione dati.

Occorre, infine, configurare il controllo ObjectDataSource per specificare l'azione che il controllo deve eseguire per inserire i dati.

Per configurare il controllo origine dati relativo all'inserimento dei dati

  • Fare clic con il pulsante destro del mouse su AuthorsObjectDataSource, scegliere Proprietà, quindi impostare InsertMethod su InsertAuthor.

    Si tratta del nome del metodo aggiunto al componente business.

È possibile ora inserire nuovi autori nel file XML.

Per verificare l'inserimento

  1. Premere CTRL+F5 per eseguire la pagina Default.aspx.

  2. Nel controllo DetailsView scegliere il pulsante Nuovo.

    La griglia verrà visualizzata nuovamente con le caselle di testo.

  3. Immettere nuove informazioni sull'autore, quindi scegliere Inserisci.

    Le nuove informazioni sull'autore verranno aggiunte al file XML. Il controllo GridView consente di riflettere immediatamente il nuovo record.

Passaggi successivi

In questa procedura dettagliata viene illustrato come utilizzare un componente di dati. È possibile sperimentare ulteriori funzionalità di spostamento. Può, ad esempio, essere necessario:

Vedere anche

Attività

Procedura dettagliata: pagine Web con associazione ai dati a un componente dati di Visual Studio

Procedura dettagliata: utilizzo di codice condiviso nei siti Web in Visual Web Developer

Procedura dettagliata: creazione di una pagina Web di base in Visual Web Developer

Concetti

Cenni preliminari sui controlli origine dati

Utilizzo di parametri con controlli origine dati