ASP.NET 3.5 – Uudet ominaisuudet Jani Järvinen, C# MVP Technical Manager, Software Dev. Moonsoft Oy
Agenda •Kaksi esitystä, lounas välissä •Osa 1, käyttöliittymät –Uudet kontrollit •Osa 2, AJAX ja tietokannat –AJAX-ominaisuudet –LINQ
Mitä uutta ASP.NET 3.5:ssä?
Yleiskatsaus uutuuksiin •Uusia kontrolleja –ListView ja DataPager •Uusia nimiavaruuksia –System.Web.Extensions-koonnissa •Sisäkkäiset mallisivut –Tuki Visual Studiossa, viimeinkin •AJAX-tuki
Lisää uutuuksia •Tietokantayhteydet –LINQ-tuki –LinqDataSource-kontrolli •IIS 7.0 -integrointi –Käyttäjäntunnistus ja välimuisti käytettävissä kaikilla tiedostotyypeillä
Työkaluja •ASP.NET Merge Tool –Aspnet_merge.exe –Kääntää web-projektista yhden tai useamman koonnin
Laajennuksista.NET 3.5:een •Aiemmista erillisosista ja laajennuksista tullut osa.NET 3.5:ttä •Vihreät ja punaiset bitit
Uudet kontrollit
•ASP.NET 1.1 –Repeater –DataGrid –DataList •ASP.NET 2.0 –GridView –FormView •ASP.NET 3.5 –ListView –DataPager Komponenttihistoriaa
•ListView –Monipuolisemmat tarpeet –Ei pelkkiä taulukkoja –”Point & click” •DataPager –Helpompi sivutus Miksi uusia kontrolleja?
ListView
•System.Web.UI.WebControls.ListView •Yhdistää grid- ja Repeater-kontrollien ominaisuuksia •Voi olla täysin CSS-pohjainen, ei HTML:n table-elementtiä •Tukee myös tietojen muokkausta ListView-kontrolli
•ListView tarvitsee toimiakseen mallipohjia •ItemTemplate –Toistaa rivit esim. tietokannasta –Tarvitaan kontrolli, jonka ID="itemPlaceHolder" •LayoutTemplate –Määrittää ulkoasun •EditTemplate –Muokkaamista varten Mallit (templates)
<asp:PlaceHolder ID=" itemPlaceHolder ” runat="server" /> : Esimerkki mallista
•EditItemTemplate-malli •Määrittelee mallin, jonka mukaan muokkaus tapahtuu •Eval-metodin sijaan käydä Bindia – •Määrittele ItemEditing-tapahtumankäsittelijä –Aseta EditIndex –Tee DataBind() Muokkausominaisuudet
•ListView-kontrollinen yhteyteen tarvitaan painikkeita •Painikkeiden CommandName-ominaisuus –Edit, Insert, Delete –Update, Cancel •Toteuta Item*ing-tapahtumat –Esim. ItemUpdating, ItemEditing •Paluu katselutilaan –EditIndex = -1 Komennot ja tapahtumat
•SelectedItemTemplate •Määrittää, miten valittu rivi (tms.) näytetään •SelectedIndex-ominaisuus –Lue tai aseta valittu rivi –Aina suhteellinen näkymään, ei tietolähteeseen •Tapahtumat –SelectedIndexChanging –SelectedIndexChanged Valinta (selection)
•ListView-kontrolli tukee myös tietojen lajittelua •Kutsu vain Sort-metodia –Parametreina lajiteltava sarake ja suunta –Paluu normaaliin: lajiteltava sarake = ”” •Vaihtoehtona esim. LinkButton –CommandName = ”Sort” –CommandArgument=”sarakkeen nimi” •Tapahtumat –Sorting, Sorted Lajittelu (sorting)
•Ryhmittely –GroupTemplate –GroupItemCount •Ulkoasu –LayoutTemplate –Sivutus-mahdollisuus •EmptyItem/EmptyDataTemplate Muita mahdollisuuksia
DataPager
•Mahdollistaa sivutustoiminnot •Voidaan yhdistää muihin kontrolleihin –Esim. ListView jne. •Kaksi päätyyliä –Numerot –Painikkeet DataPager-komponentti
•PagedControlID –Mikä kontrolli sivutetaan •PageSize –Montako elementtiä per sivu •Painike- tai numerokomponentit –NextPreviousPagerField –NumericPagerField –Tai sekä että Sivutustoiminnallisuus
<asp:DataPager ID="DataPager1" PagedControlID ="ListView1” runat="server"> <asp:NextPreviousPagerField ButtonType="Button“ ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> Esimerkki DataPagerista
•Rajapinta sivutukselle •ListView-kontrolli toteuttaa •SetPageProperties-metodi –Kutsutaan aina, kun sivutettava kontrollin sivua on tarpeen vaihtaa •Toteutettavissa itsekin IPageableItemContainer
•Oletusarvoisesti DataPager-kontrolli käyttää POST-metodia –javascript:__doPostBack('DataPager1$ctl01','') •Vaihtoehtoisesti voidaan käyttää myös GET- metodia •QueryStringField-ominaisuus – mun_oma =2 –Painikkeet vaihtuvat linkeiksi Siirtyminen sivulta toiselle
System.Web.Extensions
•System.Web. Extensions.dll •Monia uusia nimi- avaruuksia –Monet liittyvät WCF:ään –AJAX-toteutukset •Esim. JavaScript serializer •System.Web.UI. WebControls Uusi koonti (assembly)
AJAX-toiminnallisuus
•Paljon puhetta, vähän tekoja? •Onko AJAXille aidosti tarvetta? •Voitko kehittää moderneja sovelluksia ilman AJAXia? Missä mennään tänään
•AJAX-kontrollit kaikkien käyttöön •Ei enää erillisiä laajennuksia •Helppo ottaa käyttöön omissa ASP.NET- sovelluksissa Visual Studio &.NET 3.5
•Kaksi komponenttia –ScriptManager –Update Panel •Yksi ScriptManager per sivu •Koodia voidaan kirjoittaa kuten ennenkin Alkuun AJAX-toteutuksissa
•Näyttää käyttäjälle, että jotain tapahtuu •Tarvitaan –ProgressTemplate •Pätkä HTML-koodia, joka näytetään –AssociatedUpdatePanelID •Mihin paneeliin toiminto liitty –DisplayAfter •Aikaraja, oletus 0,5 sekuntia •Ei tarvitse olla UpdatePanelin sisällä UpdateProgress-kontrolli
<asp:UpdateProgress ID="UpdateProgress1” runat="server" AssociatedUpdatePanelID="UpdatePanel1” DisplayAfter="2000"> Hetki pieni... Esimerkki
•Tarjoaa joukon valmiita kontrolleja •Laajentaa Visual Studion ja.NET 3.5:n vakiotarjontaa •Maksuton, lähdekoodi saatavilla •Lataa – AJAX Control Toolkit
•Muokkaavat valmiiden komponenttien toiminnallisuutta –Esim. ConfirmButton •System.Web.UI.ExtenderControl •Katso –”Adding ASP.NET AJAX Client Behaviors to Web Server Controls” Laajennukset (extenders)
JavaScript-tuki
•Visual Studio 2008 tuo mukanaan uusia JavaScript-ominaisuuksia •IntelliSense-tuki •Omien luokkien dokumentointi- mahdollisuus –XML-dokumentaatiota myös JavaScript-koodiin Uusia ominaisuuksia
•Huomaa, että XML-dokumentit on kirjoitettava metodin lohkon sisään! function SayHello(name) { /// This method returns a string saying Hello, World! /// < param name="name" type="string">Specifies the name to send greetings to. return "Hello, "+name+"!"; } Esimerkki
LINQ ja ASP.NET-sovellukset
•Uusi tapa käsitellä erilaisia tietolähteitä yhdellä tavalla, suoraan ohjelmointikielen syntaksia käyttäen •Tuettuina: –omat oliot –XML-tiedostot –DataSet-tietovarasto –SQL Server -tietokannat LINQ – pikakertaus
int[] numbers = { 3, 6, 2, 9, 12, 7, 4, 5, 11 }; var bigNumbers = from n in numbers where n > 5 select n; foreach (int bigNum in bigNumbers) { … } Pikaesimerkki: omat oliot
•.NET 3.5 sisältää yksinkertaisen oliomapperin SQL Serverille –O/R Mapper •Lisää projektiin ”LINQ to SQL Classes” -malli LINQ ja SQL Server
PhotosDataContext context = new PhotosDataContext (); var albums = from album in context.Albums orderby album.Name select album; StringBuilder buffer = new StringBuilder(); foreach (var album in albums) { string name = album.Name; buffer.AppendLine(name + " "); } Label1.Text = buffer.ToString(); Esimerkki SQL-kyselystä
LinqDataSource
•Tarjoaa web-sovelluksille helpon tavan viitata LINQ-tietolähteisiin •Projektiin on oltava jo lisätty LINQ-luokkia kuten edellä –Visual Studio näkee projektin DataContext-oliot •Käy tietolähteeksi normaalisti esim. ListView- ja GridView- kontrolleille LinqDataSource-kontrolli
•ContextTypeName –Tietolähden LINQ-kyselyille •TableName –Mistä taulusta haetaan tietoja •Select, Where, OrderBy –Lähdekoodikieliset ehtolauseet –Ota AutoGenerate*-ominaisuudet pois päältä Ominaisuuksia
< asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="AlbumID" DataSourceID ="LinqDataSource1"> … < asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName ="WebAppDemo.PhotosDataContext" TableName ="Albums"> Esimerkki
<asp:LinqDataSource ID="LinqDataSource1" runat="server” ContextTypeName="WebAppDemo.PhotosDataContext" TableName="Albums" AutoGenerateWhereClause ="True"> <asp:ControlParameter Name="AlbumID" ControlID="DropDownList1" Type="Int32" /> Where-ehto
Yhteenveto
•ASP.NET 3.5 on monipuolinen laajennus •Uusia kontrolleja •AJAX-tuki •LINQ ja tietokannat Mitä uutta ASP.NET 3.5:ssä?
•Yhteystiedot –Jani Järvinen, Moonsoft Oy •Seuraa CodeZonea ja ITpro.fi:tä – – Kiitos!