Megosztás a következőn keresztül:


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-uploadalatt. 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. A private például egy maxAllowedFiles 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ául this) és az null, 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 @currentCountsegí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 a currentCount 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 dokumentumobjektum-modellre mutató hivatkozások a DOMrövidítést használják.

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ó:

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:

Alkalmazások mintái az adattárban:

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.

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.