Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa serie di esercitazioni illustra gli aspetti di base dell'uso dell'associazione di modelli con un progetto Web Form ASP.NET. L'associazione di modelli rende l'interazione dei dati più semplice rispetto alla gestione di oggetti origine dati, ad esempio ObjectDataSource o SqlDataSource. Questa serie inizia con materiale introduttivo e passa a concetti più avanzati nelle esercitazioni successive.
Questa esercitazione illustra come creare, aggiornare ed eliminare dati con l'associazione di modelli. Verranno impostate le proprietà seguenti:
- DeleteMethod
- InsertMethod
- Metodo di aggiornamento
Queste proprietà ricevono il nome del metodo che gestisce l'operazione corrispondente. All'interno di questo metodo si fornisce la logica per interagire con i dati.
Questa esercitazione si basa sul progetto creato nella prima parte della serie.
È possibile scaricare il progetto completo in C# o VB. Il codice scaricabile funziona con Visual Studio 2012 o Visual Studio 2013. Usa il modello di Visual Studio 2012, leggermente diverso dal modello di Visual Studio 2013 illustrato in questa esercitazione.
Cosa costruirai
In questa esercitazione si apprenderà come:
- Aggiungere modelli di dati dinamici
- Abilitare l'aggiornamento e l'eliminazione dei dati tramite metodi di associazione di modelli
- Applicare le regole di convalida dei dati - Abilitare la creazione di un nuovo record nel database
Aggiungere modelli di dati dinamici
Per offrire un'esperienza utente ottimale e ridurre al minimo la ripetizione del codice, si useranno modelli di dati dinamici. È possibile integrare facilmente modelli di dati dinamici predefiniti nel sito esistente installando un pacchetto NuGet.
Nella finestra Manage NuGet Packages, installare DynamicDataTemplatesCS.
Si noti che il progetto include ora una cartella denominata DynamicData. In tale cartella sono disponibili i modelli applicati automaticamente ai controlli dinamici nei web form.
Abilitare l'aggiornamento e l'eliminazione
Consentire agli utenti di aggiornare ed eliminare record nel database è molto simile al processo di recupero dei dati. Nelle proprietà UpdateMethod e DeleteMethod specificare i nomi dei metodi che eseguono tali operazioni. Con un controllo GridView è anche possibile specificare la generazione automatica dei pulsanti di modifica ed eliminazione. Il codice evidenziato seguente mostra le aggiunte al codice GridView.
<asp:GridView runat="server" ID="studentsGrid"
ItemType="ContosoUniversityModelBinding.Models.Student" DataKeyNames="StudentID"
SelectMethod="studentsGrid_GetData"
UpdateMethod="studentsGrid_UpdateItem" DeleteMethod="studentsGrid_DeleteItem"
AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"
AutoGenerateColumns="false">
Nel file code-behind, aggiungere un'istruzione using per System.Data.Entity.Infrastructure.
using System.Data.Entity.Infrastructure;
Aggiungere quindi i metodi di aggiornamento ed eliminazione seguenti.
public void studentsGrid_UpdateItem(int studentID)
{
using (SchoolContext db = new SchoolContext())
{
Student item = null;
item = db.Students.Find(studentID);
if (item == null)
{
ModelState.AddModelError("",
String.Format("Item with id {0} was not found", studentID));
return;
}
TryUpdateModel(item);
if (ModelState.IsValid)
{
db.SaveChanges();
}
}
}
public void studentsGrid_DeleteItem(int studentID)
{
using (SchoolContext db = new SchoolContext())
{
var item = new Student { StudentID = studentID };
db.Entry(item).State = EntityState.Deleted;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
ModelState.AddModelError("",
String.Format("Item with id {0} no longer exists in the database.", studentID));
}
}
}
Il metodo TryUpdateModel applica i valori associati a dati corrispondenti dal web form all'elemento di dati. L'elemento di dati viene recuperato in base al valore del parametro id.
Applicare i requisiti di convalida
Gli attributi di convalida applicati alle proprietà FirstName, LastName e Year nella classe Student vengono applicati automaticamente durante l'aggiornamento dei dati. I controlli DynamicField aggiungono validator per il client e il server basandosi sugli attributi di convalida. Le proprietà FirstName e LastName sono entrambe obbligatorie. FirstName non può superare i 20 caratteri e LastName non può superare i 40 caratteri. L'anno deve essere un valore valido per l'enum AcademicYear.
Se l'utente viola uno dei requisiti di convalida, l'aggiornamento non procede. Per visualizzare il messaggio di errore, aggiungere un controllo ValidationSummary sopra GridView. Per visualizzare gli errori di convalida dall'associazione di modelli, impostare la proprietà ShowModelStateErrors su true.
<asp:ValidationSummary ShowModelStateErrors="true" runat="server" />
Eseguire l'applicazione Web ed aggiornare ed eliminare uno dei record.
Si noti che quando si è in modalità modifica, il valore della proprietà Year viene automaticamente visualizzato come elenco a tendina. La proprietà Year è un valore di enumerazione e il modello di dati dinamici per un valore di enumerazione specifica un elenco a discesa per la modifica. È possibile trovare il modello aprendo il file Enumeration_Edit.ascx nella cartella DynamicData/FieldTemplates .
Se si specificano valori validi, l'aggiornamento viene completato correttamente. Se si viola uno dei requisiti di convalida, l'aggiornamento non procede e viene visualizzato un messaggio di errore sopra la griglia.
Aggiungere nuovi record
Il controllo GridView non include la proprietà InsertMethod e pertanto non può essere utilizzato per aggiungere un nuovo record con l'associazione di modelli. È possibile trovare la proprietà InsertMethod nei controlli FormView, DetailsView o ListView . In questa esercitazione si userà un controllo FormView per aggiungere un nuovo record.
Aggiungere prima di tutto un collegamento alla nuova pagina che verrà creata per l'aggiunta di un nuovo record. Sopra il ValidationSummary, aggiungere:
<asp:HyperLink NavigateUrl="~/AddStudent" Text="Add New Student" runat="server" />
Il nuovo collegamento verrà visualizzato nella parte superiore del contenuto per la pagina Studenti.
Aggiungere quindi un nuovo modulo Web usando una pagina master e denominarlo AddStudent. Selezionare Site.Master come pagina master.
Si eseguirà il rendering dei campi per l'aggiunta di un nuovo studente usando un controllo DynamicEntity . Il controllo DynamicEntity esegue il rendering delle proprietà modificabili nella classe specificata nella proprietà ItemType. La proprietà StudentID è stata contrassegnata con l'attributo [ScaffoldColumn(false)] in modo che non venga eseguito il rendering. Nel segnaposto MainContent della pagina AddStudent aggiungere il codice seguente.
<asp:ValidationSummary runat="server" ShowModelStateErrors="true" />
<asp:FormView runat="server" ID="addStudentForm"
ItemType="ContosoUniversityModelBinding.Models.Student"
InsertMethod="addStudentForm_InsertItem" DefaultMode="Insert"
RenderOuterTable="false" OnItemInserted="addStudentForm_ItemInserted">
<InsertItemTemplate>
<fieldset>
<ol>
<asp:DynamicEntity runat="server" Mode="Insert" />
</ol>
<asp:Button runat="server" Text="Insert" CommandName="Insert" />
<asp:Button runat="server" Text="Cancel" CausesValidation="false" OnClick="cancelButton_Click" />
</fieldset>
</InsertItemTemplate>
</asp:FormView>
Nel file code-behind (AddStudent.aspx.cs) aggiungere un'istruzione using per lo spazio dei nomi ContosoUniversityModelBinding.Models .
using ContosoUniversityModelBinding.Models;
Aggiungere quindi i metodi seguenti per specificare come inserire un nuovo record e un gestore eventi per il pulsante annulla.
public void addStudentForm_InsertItem()
{
var item = new Student();
TryUpdateModel(item);
if (ModelState.IsValid)
{
using (SchoolContext db = new SchoolContext())
{
db.Students.Add(item);
db.SaveChanges();
}
}
}
protected void cancelButton_Click(object sender, EventArgs e)
{
Response.Redirect("~/Students");
}
protected void addStudentForm_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
Response.Redirect("~/Students");
}
Salvare tutte le modifiche.
Eseguire l'applicazione Web e creare un nuovo studente.
Fare clic su Inserisci e notare che il nuovo studente è stato creato.
Conclusione
In questa esercitazione è stato abilitato l'aggiornamento, l'eliminazione e la creazione di dati. Quando si interagisce con i dati, assicurarsi che le regole di convalida vengano applicate.
Nell'esercitazione successiva di questa serie si abiliterà l'ordinamento, il paging e il filtro dei dati.