ASP.NET Alapvető Blazor alapjai
Jegyzet
Ez nem a cikk legújabb verziója. Lásd az aktuális kiadást a cikk .NET 9-es verziójában.
Figyelmeztetés
A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. Lásd az aktuális kiadást a cikk .NET 9-es verziójában.
Fontos
Ezek az információk egy olyan előzetes termékre vonatkoznak, amelyet a kereskedelmi forgalomba kerülés előtt jelentősen módosíthatnak. A Microsoft nem vállal kifejezett vagy hallgatólagos szavatosságot az itt megadott információkra vonatkozóan.
Lásd az aktuális kiadást a cikk .NET 9-es verziójában.
Alapokkal kapcsolatos cikkek útmutatást adnak az alapvető Blazor fogalmakhoz. A fogalmak némelyike a Razor összetevőkalapszintű megértéséhez kapcsolódik, amelyeket a cikk következő szakaszában ismertetünk, és részletesen foglalkozunk a Összetevők cikkekkel.
Statikus és interaktív megjelenítési fogalmak
Razor összetevők statikusan renderelhetők, vagy interaktívan renderelhetők.
Statikus vagy statikus renderelés egy kiszolgálóoldali forgatókönyv, amely azt jelenti, hogy az összetevő a felhasználó és a .NET/C# kód közötti interakció lehetősége nélkül jelenik meg. A JavaScript- és HTML DOM-események nem változnak, de az ügyfélen lévő felhasználói események nem dolgozhatók fel a kiszolgálón futó .NET-tel.
interaktív/interaktivitás vagy interaktív renderelés ami azt jelenti, hogy az összetevő képes a .NET-események feldolgozására és a C# kóddal való kötésre. A .NET-eseményeket és kötéseket a kiszolgálón a ASP.NET Core-futtatókörnyezet vagy a WebAssembly-alapú Blazor futtatókörnyezet dolgozza fel az ügyfél böngészőjében.
Fontos
Blazor Web Apphasználatakor a Blazor dokumentációs példaösszetevők többsége interaktivitást igényel, és bemutatja a cikkekben foglalt fogalmakat. Ha egy cikk által megadott példaösszetevőt tesztel egy Blazor Web App-ban, győződjön meg arról, hogy az alkalmazás globális interaktivitást használ, vagy az összetevő interaktív megjelenítési módot használ. Erről a témáról további információt ASP.NET Core Blazor renderelési módok a Összetevők szakaszban talál, amely a Blazor dokumentációkészlet későbbi részében jelenik meg.
Ezekről a fogalmakról, valamint a statikus és interaktív renderelés szabályozásáról további információt a ASP.NET Core Blazor renderelési módokkalBlazor dokumentációjának későbbi részében talál.
Ügyfél- és kiszolgálómegjelenítési fogalmak
A Blazor dokumentációban a felhasználó rendszerében zajló tevékenységekről azt mondják, hogy az ügyfél eszközén vagy ügyféloldalon történnek. A szerveren zajló tevékenységet mondják úgy, hogy a szerveren vagy kiszolgálóoldalontörténik.
A renderelési kifejezés azt jelenti, hogy előállítjuk azt a HTML-jelölőnyelvet, amelyet a böngészők megjelenítenek.
ügyféloldali renderelés (CSR) azt jelenti, hogy a végleges HTML-korrektúrát az ügyfél .NET WebAssembly futtatókörnyezete hozza létre. Az alkalmazás ügyfél által létrehozott felhasználói felületéhez nem küld HTML-t a rendszer egy kiszolgálóról az ügyfélnek az ilyen típusú rendereléshez. A lap felhasználói interaktivitását feltételezzük. Nincs olyan fogalom, mint statikus ügyféloldali renderelés. A CSR-t interaktívnak feltételezzük, ezért a "interaktív ügyféloldali renderelés" és a "interaktív CSR" nem használatos az iparág vagy a Blazor dokumentációjában.
kiszolgálóoldali renderelés (SSR) azt jelenti, hogy a végső HTML-korrektúrát a kiszolgáló ASP.NET Core-futtatókörnyezete hozza létre. A HTML-fájlt egy hálózaton keresztül küldi el az ügyfélnek, hogy az ügyfél böngészője megjelenítse. Az ügyfél nem hoz létre HTML-t az alkalmazás kiszolgáló által létrehozott felhasználói felületéhez az ilyen típusú megjelenítéshez. Az SSR két fajtából áll:
- Statikus SSR-: A kiszolgáló statikus HTML-t hoz létre, amely nem biztosít felhasználói interaktivitást vagy Razor összetevő állapotának fenntartását.
- interaktív SSR-: Blazor események lehetővé teszik a felhasználók interaktivitását, és Razor összetevő állapotát a Blazor keretrendszer tartja fenn.
Előrenderelés a laptartalom eredeti megjelenítése a kiszolgálón anélkül, hogy engedélyezné az eseménykezelőket a renderelt vezérlők számára. A kiszolgáló a lehető leghamarabb kiadja a lap HTML-felületét a kezdeti kérésre válaszul, így az alkalmazás rugalmasabbnak érzi magát a felhasználók számára. Az előrenderelés is javíthatja a keresőmotor-optimalizálást (SEO) azáltal, hogy a keresőmotorok által az oldal rangsorának kiszámításához használt kezdeti HTTP-válasz tartalmát rendereli. Az előrendelést mindig a végleges renderelés követi, akár a kiszolgálón, akár az ügyfélen.
Razor összetevők
Blazor alkalmazások Razor összetevőkönalapulnak , amelyeket gyakran csak összetevőknek neveznek. A összetevő a felhasználói felület egyik eleme, például egy lap, párbeszédpanel vagy adatbeviteli űrlap. Az összetevők .NET C#-osztályok, melyek beépülnek a .NET-gyűjteményekbe.
Razor arra vonatkozik, hogyan írják általában az összetevőket egy Razor jelölőlap formájában az ügyféloldali felhasználói felület logikájához és összetételéhez.
Razor a HTML-korrektúra és a fejlesztői hatékonyság érdekében tervezett C#-kód kombinálására szolgáló szintaxis.
Razor fájlok a .razor
fájlkiterjesztést használják.
Bár egyes Blazor fejlesztők és online erőforrások a "Blazor összetevők" kifejezést használják, a dokumentáció elkerüli ezt a kifejezést, és általánosan "Razor összetevőket" vagy "összetevőket" használ.
Blazor dokumentáció számos konvenciót fogad el az összetevők bemutatására és megvitatására:
- A példák általában ASP.NET Core/C# kódolási konvenciókhoz és mérnöki irányelvekhez igazodnak. További információkért tekintse meg a következő erőforrásokat:
- A projektkód, a fájl elérési útjai és nevei, a projektsablonok nevei és más speciális kifejezések az Egyesült Államok angol nyelvű, és általában kódkerítésűek.
- Az összetevőkre általában a C#-osztály neve (Pascal-eset) hivatkozik, amelyet az "összetevő" szó követ. Egy tipikus fájlfeltöltési összetevőt például "
FileUpload
összetevőnek" nevezünk. - Az összetevők C#-osztályának neve általában megegyezik a fájl nevével.
- Az routable-összetevők általában a relatív URL-címeiket az összetevő osztálynevére állítják be a kebab-eset esetében. Például egy
FileUpload
összetevő tartalmazza az útválasztási konfigurációt, amely a renderelt összetevő eléréséhez szükséges a relatív URL-/file-upload
alatt. Az útválasztást és a navigációt az ASP.NET Core Blazor útválasztási és navigációsismerteti. - Ha egy összetevő több verzióját használja, azokat egymás után számozza. A
FileUpload3
összetevő például a/file-upload-3
pontnál érhető el. -
Razor irányelvek a következő sorrendben vannak elhelyezve: ,
.razor file
(.NET 8 vagy újabb),@page
utasítások, egyéb irányelvek betűrendben. - Bár
private
tagok számára nem szükséges, a hozzáférési módosítókat a cikkbeli példákban és a mintaalkalmazásokban használjuk. Aprivate
például egymaxAllowedFiles
nevű mezőprivate int maxAllowedFiles = 3;
deklarálására szolgál. -
összetevőparaméter értékek egy Razor fenntartott
@
szimbólummalvezetnek, de nem kötelező. A literálok (például logikai értékek), a kulcsszavak (példáulthis
) és aznull
, mint összetevőparaméter-értékek nincsenek előtagként@
-vel ellátva; ez is csupán egy dokumentációs konvenció. Ha szeretné, a saját kódjában előtagként használhatja a@
jelölést konstansokhoz. - A C# osztályok a
this
kulcsszót használják, és elkerülik az aláhúzásjellel (_
) rendelkező mezők előtagolását, amelyeket a konstruktorokban rendelnek hozzá, amely eltér a ASP.NET Core keretrendszer tervezési irányelveitől. - A elsődleges konstruktorokat (C# 12 vagy újabb)használó példákban az elsődleges konstruktorparamétereket általában közvetlenül az osztálytagok használják. A cikk példáiban a kódsorok fel vannak osztva a vízszintes görgetés csökkentése érdekében. Ezek a törések nem befolyásolják a végrehajtást, de a projektbe illesztéskor eltávolíthatók.
Az Razor összetevőszintaxisával kapcsolatos további információkat az Razor szakaszában talál.
Az alábbiakban egy példaszámláló összetevőt és egy Blazor projektsablonból létrehozott alkalmazás részét mutatjuk be. Az összetevők részletes lefedettségét a dokumentáció későbbi, Components cikkeiben találja. Az alábbi példa az Alapjai cikkekben szereplő összetevőkkel kapcsolatos fogalmakat mutatja be, mielőtt a dokumentáció későbbi, Összetevők cikkekhez jut.
Counter.razor
:
Az összetevő feltételezi, hogy az interaktív renderelési mód öröklődik egy szülőösszetevőtől, vagy globálisan alkalmazva van az alkalmazásra.
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount() => currentCount++;
}
Az összetevő feltételezi, hogy az interaktív renderelési mód öröklődik egy szülőösszetevőtől, vagy globálisan alkalmazva van az alkalmazásra.
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount() => currentCount++;
}
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Az előző Counter
összetevő:
- Az első sorban lévő
@page
irányelvvel állítja be az útvonalát. - Beállítja a lap címét és címsorát.
- Az aktuális számot
@currentCount
segítségével jeleníti meg.currentCount
a@code
blokk C#-kódjában definiált egész változó. - Megjelenít egy gombot a
IncrementCount
metódus aktiválásához, amely a@code
blokkban is megtalálható, és növeli acurrentCount
változó értékét.
Renderelési módok
A Alapjai csomópontban található cikkek a renderelési módokfogalmára hivatkoznak. A ASP.NET Core Blazor renderelési módokról szóló cikk részletesen tárgyalja ezt a témát a Összetevők csomópontban, amely a Alapvetések csomópont után található a cikkek között.
A cikkek ezen csomópontjában a renderelési mód fogalmára vonatkozó korai hivatkozások esetében jelenleg csak jegyezze fel a következőket:
A Blazor Web App minden összetevője egy renderelési módot használ annak meghatározására, hogy mely üzemeltetési modellt használja, hol kerül renderelésre, illetve hogy statikusan van-e renderelve a kiszolgálón, a felhasználói interaktivitás a kiszolgálón történik-e, vagy a kliens oldalon van-e renderelve felhasználói interaktivitásra (általában a kiszolgálón való előrendereléssel).
A .NET 8 előtti ASP.NET Core-kiadásokhoz készült Blazor Server és Blazor WebAssembly alkalmazások továbbra is a üzemeltetési modell fogalmaira maradnak összpontosítva, nem pedig a renderelési módokra. A renderelési módokat elméletileg a .NET 8 vagy újabb verziókban Blazor Web App-ekre alkalmazzák.
Az alábbi táblázat a RazorBlazor Web App összetevőinek renderelésével elérhető renderelési módokat mutatja be. A renderelési módok a @rendermode
irányelvvel rendelkező összetevőpéldányokra vagy összetevődefiníciókra alkalmazandók. Renderelési módot is beállíthat a teljes alkalmazáshoz.
Név | Leírás | Renderelési hely | Interaktív |
---|---|---|---|
Statikus kiszolgáló | Statikus kiszolgálóoldali renderelés (statikus SSR) | Kiszolgáló | Nincs |
Interaktív kiszolgáló | Interaktív kiszolgálóoldali renderelés (interaktív SSR) Blazor Server | Kiszolgáló | ✔️ Igen |
Interaktív WebAssembly | Ügyféloldali renderelés (CSR) Blazor WebAssembly† használatával | Ügyfél | ✔️ Igen |
Interaktív autó | Az interaktív SSR eleinte a Blazor Server-t használja, majd a CSR-t alkalmazza a későbbi látogatásokon, miután a Blazor csomag letöltődött. | Kiszolgáló, majd ügyfél | ✔️ Igen |
†Client-oldali renderelés (CSR) interaktívnak minősül. "Interaktív ügyféloldali renderelés" és "interaktív CSR" nem használatos az iparág vagy a Blazor dokumentációjában.
A renderelési módokra vonatkozó előző információk minden olyan tudnivalót tartalmaznak, amely szükséges, hogy megértse a Alapok csomópont cikkeket. Ha még nem ismeri Blazor és olvas Blazor cikkeket a tartalomjegyzékben, késleltetheti a renderelési módok részletes információinak használatát, amíg el nem éri a ASP.NET Core Blazor renderelési módokat a Összetevők csomópontban található cikkben.
Dokumentumobjektum-modell (DOM)
A
További információ:
A .NET API-k részhalmaza Blazor WebAssembly alkalmazásokhoz
A Blazor WebAssembly által a böngészőn támogatott adott .NET API-k válogatott listája nincs elérhető. A WebAssemblyben nem támogatott .NET API-k felderítéséhez azonban manuálisan kereshet a [UnsupportedOSPlatform("browser")]
jegyzetekkel ellátott .NET API-k listájára.
Jegyzet
A .NET referenciaforrásra mutató dokumentációs hivatkozások általában betöltik az adattár alapértelmezett ágát, amely a .NET következő kiadásának aktuális fejlesztését jelöli. Egy adott kiadás címkéjének kiválasztásához használja az Ágak és címkék váltása legördülő listát. További információ: A ASP.NET Core-forráskód (dotnet/AspNetCore.Docs #26205) verziócímkéjének kiválasztása.
További információ:
- osztálykódtárak: Ügyféloldali böngészőkompatibilitás-elemző
-
API-k megjegyzése adott platformokon nem támogatottként (
dotnet/designs
GitHub-adattár
Mintaalkalmazások
A dokumentációs mintaalkalmazások megtekinthetők és letölthetők:
Blazor minta GitHub-adattár (dotnet/blazor-samples
)
Keresse meg a mintaalkalmazást, ha először kiválasztja azt a verziómappát, amely megfelel a .NET azon verziójának, amellyel éppen dolgozik.
Alkalmazások mintái az adattárban:
- Blazor Web App
- Blazor WebAssembly
- Blazor Web App Filmek oktatóanyag minta (Blazor filmadatbázis-alkalmazás létrehozása (Áttekintés))
- Blazor Web App SignalR (ASP.NET Core használata SignalRBlazor alkalmazásával)
- Két Blazor Web Appés egy Blazor WebAssembly-alkalmazás a webes (kiszolgálói) API-k meghívásához (Webes API meghívása egy ASP.NET Core Blazor-alkalmazásból)
- Blazor Web App OIDC használatával (BFF és nem BFF minták) (ASP.NET Core védelme az OpenID Connect (OIDC) használatával)
- Blazor Web App az Entra-val (Biztosítson ASP.NET Core-t Blazor Web App a Microsoft Entra ID-vel)
- Blazor WebAssembly hatókör-vezérelt naplózás (ASP.NET Core Blazor naplózás)
- Blazor WebAssembly ASP.NET Core Identity (Biztonságos ASP.NET Core Blazor WebAssembly ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid alkalmazás egy Blazor Web App és egy Razor osztálytár (RCL) által biztosított megosztott felhasználói felülettel (.NET MAUIBlazor Hybrid alkalmazás létrehozása Blazor Web App)
- További minták (lásd a Blazor gitHub-adattár README-fájlját)
Alkalmazások mintái az adattárban:
- Blazor Web App
- Blazor WebAssembly
- Blazor Web App Filmek oktatóanyag minta (Blazor filmadatbázis-alkalmazás létrehozása (Áttekintés))
használata ( ASP.NET Core )használata - Két Blazor Web Appés egy Blazor WebAssembly-alkalmazás a webes (kiszolgálói) API-k meghívásához (Webes API meghívása egy ASP.NET Core Blazor-alkalmazásból)
- Blazor Web App OIDC használattal (BFF és nem BFF minták) (ASP.NET Core alkalmazás védelme OpenID Connect (OIDC) segítségével)
- Blazor WebAssembly hatókörökre engedélyezett naplózás (ASP.NET Core Blazor naplózás)
- Blazor WebAssembly ASP.NET Core Identity (Biztonságos ASP.NET Core Blazor WebAssembly ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid alkalmazás egy Blazor Web App és egy Razor osztálytár (RCL) által biztosított megosztott felhasználói felülettel (.NET MAUIBlazor Hybrid alkalmazás létrehozása Blazor Web App)
- További minták (lásd a Blazor gitHub-adattár README-fájlját)
A mintaadattár kétféle mintát tartalmaz:
- A kódrészlet-mintaalkalmazások a cikkekben megjelenő kódpéldákat biztosítják. Ezek az alkalmazások összeállíthatók, de nem feltétlenül futtathatók. Ezek az alkalmazások csak a cikkekben megjelenő példakódok beszerzéséhez hasznosak.
- A Blazor cikkekhez tartozó mintaalkalmazásokat az alábbi forgatókönyvek alapján fordíthatja le és futtathatja:
- Blazor Server és Blazor WebAssembly és SignalR
- Blazor WebAssembly hatókör-engedélyezett naplózás
További információ: az adattárban található minták listája és a letöltési utasítások: Blazor gitHub-adattár README fájl.
A ASP.NET Core-adattár alapszintű tesztalkalmazása szintén hasznos mintakészlet a különböző Blazor forgatókönyvekhez:
BasicTestApp
ASP.NET Core referenciaforrásban (dotnet/aspnetcore
)
Jegyzet
A .NET referenciaforrásra mutató dokumentációs hivatkozások általában betöltik az adattár alapértelmezett ágát, amely a .NET következő kiadásának aktuális fejlesztését jelöli. Egy adott kiadás címkéjének kiválasztásához használja az Ágak és címkék váltása legördülő listát. További információ: A ASP.NET Core-forráskód (dotnet/AspNetCore.Docs #26205) verziócímkéjének kiválasztása.
Bájt többszörösei
A .NET bájtméretek metrikus előtagokat használnak a bájtok nem tízes alapú többszöröseire az 1024 hatványai szerint.
Név (rövidítés) | Méret | Példa |
---|---|---|
Kilobájt (KB) | 1024 bájt | 1 KB = 1024 bájt |
Megabájt (MB) | 10242 bájt | 1 MB = 1 048 576 bájt |
Gigabájt (GB) | 10243 bájt | 1 GB = 1 073 741 824 bájt |
Támogatási kérelmek
Csak a dokumentációval kapcsolatos problémák megfelelőek az dotnet/AspNetCore.Docs
adattárhoz.
Terméktámogatás esetén ne nyisson meg dokumentációs problémát. Kérjen segítséget az alábbi támogatási csatornák közül egy vagy többen keresztül:
Az ASP.NET Core termékegységhez tartozó keretrendszerbeli hibák vagy termékvisszajelzés esetén nyisson egy hibajegyet a dotnet/aspnetcore
felületen. A hibajelentésekhez általában a következők szükségesek:
- Probléma egyértelmű magyarázata: Kövesse a termékegység által a probléma megnyitásakor megadott GitHub-problémasablon utasításait.
- Minimális repro projekt: Helyezzen el egy projektet a GitHubon a termékegység mérnökei számára a letöltéshez és a futtatáshoz. Kapcsolja össze a projektet a probléma nyitó megjegyzésével.
Ha egy Blazor cikk esetleges problémáját tapasztalja, nyisson meg egy dokumentációs problémát. Dokumentációs probléma megnyitásához használja a cikk alján található Dokumentációs probléma megnyitása visszajelzési hivatkozást. A problémához hozzáadott metaadatok követési adatokat biztosítanak, és automatikusan pingelik a cikk szerzőjének adatait. Ha a témakört a dokumentációs probléma megnyitása előtt megvitatták a termékegységtel, helyezzen kereszthivatkozást a mérnöki problémára a dokumentációs probléma nyitó megjegyzésében.
A Visual Studióval kapcsolatos problémák vagy visszajelzések esetén használja a Problémajelentés vagy Javaslat funkcióra kézmozdulatokat a Visual Studión belül, amelyek belső problémákat nyitnak meg a Visual Studio számára. További információ: Visual Studio Feedback.
A Visual Studio Code-tal kapcsolatos problémák esetén kérjen támogatást a közösségi támogatási fórumokon. Hibajelentések és termékvisszajelzések esetén nyisson meg egy hibát a microsoft/vscode
GitHub-adattárban.
A Blazor dokumentációval kapcsolatos GitHub-problémák automatikusan jelölve vannak a Blazor.Docs
projekt (dotnet/AspNetCore.Docs
GitHub-adattár) számára. Várjon egy rövid ideig a válaszra, különösen hétvégén és ünnepnapokon. A dokumentáció szerzői általában hétköznap 24 órán belül válaszolnak.
Közösségi hivatkozások Blazor erőforrásokhoz
Látogasson el a közösség által fenntartott Blazor erőforrásokra mutató hivatkozások gyűjteményéhez, amely a Kiváló Blazoroldalon található.
Jegyzet
A Microsoft nem birtokolja, nem tartja karban, és nem támogatja a Nagyszerű Blazor -t, valamint az ott leírt és kapcsolódó közösségi termékek és szolgáltatások többségét.