Felhasználói felületek és üzleti logika Bollobás Dávid 2012.03.13
Tartalom Controlok Adatbázis ASP.NET egyéb LoginView Ajax Guid Newid() ScriptManager UpdatePanel Adatbázis Guid Newid() C# Parameter GoodToKnow: Prevent saving changes… SQL alapok ASP.NET egyéb
LoginView Különböző felhasználók megkülönböztetése Lényegében sok „if” ágat helyettesít <AnonymousTemplate> A felhasználó nincs autektikálva <LoggedInTemplate> A felhasználó autentikált <RoleGroups><asp:RoleGroup Roles="userInRole"></asp:RoleGroup></RoleGroups> A felhasználó autentikált és egy bizonyos szerepkörbe tartozik
LoginView általános használata <AnonymousTemplate> Regisztráció, Belépés, bárki által elérhető funkciók <LoggedInTemplate> Kilépés, Profil, csak felhasználóknak elérhető tartalom <RoleGroups> Pl.: admin, csak ő érheti el a funkciókat
AJAX Asynchronous JavaScript And XML Kliens oldali Az oldalt nem kell újratölteni az adatcserénél Postbackelés az oldal egy részére Felhasználói élmény növelése Kevesebb szerver-kliens kommunikáció Sok technológia által használt, értelmezett XML
AJAX az ASP.NET ben Beépített AJAX modul Az ASP.NET egy szerver oldali technológia, kevés a felhasználó barát megoldása Beépített XML értelmező könyvtár Ugyanúgy ASP-s Drag&Drop kontrolokként használhatóak Saját AJAX kontrolok írhatóak ASP.NET AJAX Control csomag: http://www.asp.net/ajaxlibrary/act.ashx
ScriptManager Minden ASP.NET-es AJAX kontrollhoz előbb be kell tölteni a ScriptManager kontrollt Implementálja kliens oldalon a szükséges AJAX könyvtárakat Csak egy lehet egy oldalon Legérdemesebb a MasterPage-ban definiálni
UpdatePanel Egyes ASP.NET kontrolok AutoPostback tulajdonsága default true(pl.: Calendar) ezért: Minden változtatáskor újraküldik a teljes oldalt A felhasználói élményt csökkentik a folyamatos szerver kommunikációval Növelik a kliens-szerver adatforgalmat, mert elküldik a teljes formot Megoldás: UpdatePanel Szükséges hozzá a ScriptManager!(mint minden ASP.NET AJAX kontrolhoz)
UpdatePanel <ContentTemplate> <Triggers> Definiálja a kontrolokat, amik megjelennek benne <Triggers> <asp:AsyncPostBackTrigger ControlID="ctrl" EventName="click" /> Meghívható a szerverrel való szinkronizálása <asp:PostBackTrigger ControlID="ctrl"/> Meghívható a postback UpdateMode Always Ha Postback történik bárhol az oldalon Conditional Ha meghívjuk az Update függvényét vagy a Triggers-ből egy elemét
SQL alapok SELECT [column] FROM [table] WHERE [column] = @parameter Visszaadja a beírt oszlopok értékét a megadott táblából, ahol a kiemelt oszlop értéke a paraméterével egyenlő DELETE FROM [table] WHERE [column] = @parameter Kitöröl egy sort(!) a megadott táblából, ahol a kijelölt oszlop értéke megegyezik a paraméterével
SQL alapok UPDATE [table] SET [column] = @parameter1 WHERE [column] = @parameter2 Megváltoztatja az adott tábla, megadott oszlopának értékét a paraméter1 értékére, ahol a megjelölt oszlop értéke megegyezik a paraméter2-vel INSERT INTO [table] ([column1],[column2]) VALUES (@parameter1,@paramter2) Beilleszt a megadott táblába egy sort, ahol az oszlop1 értéke a paraméter1 lesz és az oszlop2 értéke a paraméter2 értékével fog megegyezni
MSSQL alapok GUID Globaly Unique Identifier 128bit-es Integer .NET és MSSQL támogatás egyaránt Pl.: 947EA01F-9ABD-4d9d-80C7-02AF85C822A8 Teljesen egyedi Nem kell foglalkozni azzal, hogy szinkronba hozzuk az adatbázis és a szerver kód által generált azonosítót Pl.: oszlopID generálás
MSSQL alapok NEWID() GoodToKnow: Server Management Studio Generál egy új GUID-t Használata legtöbbször Default Value or Binding Stored procedure GoodToKnow: Server Management Studio Tools->Options->Designers->Table and Database Designers -> Prevent saving changes that require table re-creation Sok műveletet megakadályoz pl.: oszlop név átírása
C# és az adatbázis using System.Data.SqlClient; SqlConnection & SqlCommand Elég az alapvető adatbázis műveletekhez ConfigurationManager.ConnectionStrings["fefeConnectionString"].ConnectionString Meghívja a web.config „fefeConnectionString” Connstringet SqlConnection.Open() Szükséges a parancs végrehajtás előtt SqlConnection.Close() Ajánlott lezárni a connectiont
Sqlcommand és Sqlconnection SqlCommand.ExecuteNonQuery() Végrehajtja az SqlCommand-t, de nem térít vissza értéket SqlCommand.ExecuteScalar() Végrehatja az SqlCommand-t és a legelső sor legelső értékét visszatéríti SqlCommand.ExecuteReader() Végrehatja az SqlCommand-t és a visszakapott eredményen(sorokban) végig olvas
@SqlParameter @ segítségével határozzuk meg, hogy egy paraméterre gondoltunk az SqlCommand.CommandText-ben vagy a Stored procedure számára Olykor szükséges az SqlParamter osztály használata pl.: DateTime esetén Az ASP.NET és az MSSQL különböző módon használja Hibát dob ha csak stringként kerül átadásra Felhasználói input esetén „kötelező” használni Megakadályozza az SQL kód törését
ASP.NET egyebek Membership.GetUser(string Name).ProviderUserKey Visszaadja a UserName szerint a userID-t(Guid) Page.User.Identity.IsAuthenticated Visszaadja, hogy a felhasználó be van e jelentkezve Az adott oldalra tartozik Bool érték Page.User.Identity.Name Visszaadja a bejelentkezett felhasználó nevét Az adott oldalra vonatkozik Session.Abandon() Megsemmisíti a Session-ket