ASP.NET Core Razor-componenten uit een Razor class library (RCL) gebruiken
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
Onderdelen kunnen worden gedeeld in een Razor klassebibliotheek (RCL) tussen projecten. Onderdelen en statische assets opnemen in een app van:
- Een ander project in de oplossing.
- Een .NET-bibliotheek waarnaar wordt verwezen.
- Een NuGet-pakket.
Net zoals onderdelen reguliere .NET-typen zijn, zijn onderdelen die worden geleverd door een RCL normale .NET-assembly's.
Een RCL maken
- Maak een nieuw project.
- Selecteer in het dialoogvenster Een nieuw project makenRazor Klassebibliotheek in de lijst met ASP.NET Core-projectsjablonen. Selecteer Volgende.
- Geef in het dialoogvenster Uw nieuwe project configureren een projectnaam op in het veld Projectnaam. In voorbeelden in dit onderwerp wordt de projectnaam
ComponentLibrary
gebruikt. Selecteer Volgende. - Selecteer niet ondersteuningspagina's en weergavenin het dialoogvenster Aanvullende informatie. Selecteer maken.
- Voeg de RCL toe aan een oplossing:
- Open de oplossing.
- Klik met de rechtermuisknop op de oplossing in Solution Explorer. Selecteer >bestaand project toevoegen.
- Navigeer naar het projectbestand van de RCL.
- Selecteer het projectbestand van de RCL (
.csproj
).
- Voeg een verwijzing toe naar de RCL vanuit de app:
- Klik met de rechtermuisknop op het app-project. Selecteer >projectreferentie toevoegen.
- Selecteer het RCL-project. Selecteer OK-.
Een Razor-onderdeel van een RCL gebruiken
Als u onderdelen van een RCL in een ander project wilt gebruiken, gebruikt u een van de volgende methoden:
- Gebruik de volledige naam van het onderdeeltype, die de naamruimte van de RCL bevat.
- Afzonderlijke onderdelen kunnen op naam worden toegevoegd zonder de naamruimte van de RCL, als de Razor's
@using
-instructie de naamruimte van de RCL beschrijft. Gebruik de volgende methoden:- Voeg de
@using
-instructie toe aan afzonderlijke onderdelen. - neem de
@using
instructie op in het_Imports.razor
-bestand op het hoogste niveau om de onderdelen van de bibliotheek beschikbaar te maken voor een volledig project. Voeg de instructie toe aan een_Imports.razor
-bestand op elk niveau om de naamruimte toe te passen op één onderdeel of set onderdelen in een map. Wanneer een_Imports.razor
-bestand wordt gebruikt, hebben afzonderlijke onderdelen geen@using
-instructie nodig voor de naamruimte van de RCL.
- Voeg de
In de volgende voorbeelden is ComponentLibrary
een RCL die het Component1
-onderdeel bevat. Het Component1
onderdeel is een voorbeeldonderdeel dat automatisch wordt toegevoegd aan een RCL die is gemaakt op basis van de RCL-projectsjabloon die niet is gemaakt ter ondersteuning van pagina's en weergaven.
Component1.razor
in de ComponentLibrary
RCL:
<div class="my-component">
This component is defined in the <strong>ComponentLibrary</strong> package.
</div>
In de app die de RCL gebruikt, verwijst u naar het Component1
onderdeel met behulp van de naamruimte, zoals in het volgende voorbeeld wordt weergegeven.
ConsumeComponent1.razor
:
@page "/consume-component-1"
<h1>Consume component (full namespace example)</h1>
<ComponentLibrary.Component1 />
U kunt ook een @using
instructie toevoegen en het onderdeel zonder de naamruimte ervan gebruiken. De volgende @using
-instructie kan ook voorkomen in elk _Imports.razor
-bestand op of boven de huidige map.
ConsumeComponent2.razor
:
@page "/consume-component-2"
@using ComponentLibrary
<h1>Consume component (<code>@@using</code> example)</h1>
<Component1 />
Voor bibliotheekonderdelen die gebruikmaken van CSS-isolatie, worden de onderdeelstijlen automatisch beschikbaar gemaakt voor de verbruikende app. U hoeft de afzonderlijke opmaakmodellen voor onderdelen of het gebundelde CSS-bestand van de bibliotheek niet handmatig te koppelen of te importeren in de app die de bibliotheek gebruikt. De app maakt gebruik van CSS-importbewerkingen om te verwijzen naar de gebundelde stijlen van de RCL. De gebundelde stijlen worden niet gepubliceerd als een statisch web-item van de app die de bibliotheek gebruikt. Voor een klassebibliotheek met de naam ClassLib
en een Blazor-app met een BlazorSample.styles.css
-stijlblad, wordt het stijlblad van de RCL automatisch bovenaan het stijlblad van de app geïmporteerd bij het opbouwen.
@import '_content/ClassLib/ClassLib.bundle.scp.css';
Voor de voorgaande voorbeelden wordt het opmaakmodel van Component1
(Component1.razor.css
) automatisch gebundeld.
Component1.razor.css
in de ComponentLibrary
RCL:
.my-component {
border: 2px dashed red;
padding: 1em;
margin: 1em 0;
background-image: url('background.png');
}
De achtergrondafbeelding is ook opgenomen in de RCL-projectsjabloon en bevindt zich in de map wwwroot
van de RCL.
wwwroot/background.png
in de ComponentLibrary
RCL:
Als u extra stijlen voor componenten van de bibliotheek wilt opgeven uit style sheets in de map wwwroot
van de bibliotheek, voegt u style sheet <link>
tags toe aan de gebruiker van de RCL, zoals in het volgende voorbeeld wordt gedemonstreerd.
Belangrijk
Over het algemeen gebruiken bibliotheekonderdelen CSS-isolatie om onderdeelstijlen te bundelen en aan te bieden. Onderdeelstijlen die afhankelijk zijn van CSS-isolatie, worden automatisch beschikbaar gesteld aan de app die gebruikmaakt van de RCL. U hoeft de afzonderlijke opmaakmodellen voor onderdelen of het gebundelde CSS-bestand van de bibliotheek niet handmatig te koppelen of te importeren in de app die de bibliotheek gebruikt. Het volgende voorbeeld is voor het leveren van globale opmaakmodellen buiten CSS-isolatie, wat meestal geen vereiste is voor typische apps die RCL's gebruiken.
In het volgende voorbeeld wordt de volgende achtergrondafbeelding gebruikt. Als u het voorbeeld in deze sectie implementeert, klikt u met de rechtermuisknop op de afbeelding om deze lokaal op te slaan.
wwwroot/extra-background.png
in de ComponentLibrary
RCL:
Voeg een nieuw opmaakmodel toe aan de RCL met een extra-style
-klasse.
wwwroot/additionalStyles.css
in de ComponentLibrary
RCL:
.extra-style {
border: 2px dashed blue;
padding: 1em;
margin: 1em 0;
background-image: url('extra-background.png');
}
Voeg een onderdeel toe aan de RCL die gebruikmaakt van de extra-style
-klasse.
ExtraStyles.razor
in de ComponentLibrary
RCL:
<div class="extra-style">
<p>
This component is defined in the <strong>ComponentLibrary</strong> package.
</p>
</div>
Voeg een pagina toe aan de app die gebruikmaakt van het ExtraStyles
-onderdeel van de RCL.
ConsumeComponent3.razor
:
@page "/consume-component-3"
@using ComponentLibrary
<h1>Consume component (<code>additionalStyles.css</code> example)</h1>
<ExtraStyles />
Link naar de stylesheet van de bibliotheek in de <head>
opmaak van de app (locatie van <head>
inhoud):
Blazor Web Apps:
<link href="@Assets["_content/ComponentLibrary/additionalStyles.css"]" rel="stylesheet">
Zelfstandige Blazor WebAssembly-apps:
<link href="_content/ComponentLibrary/additionalStyles.css" rel="stylesheet">
<link href="_content/ComponentLibrary/additionalStyles.css" rel="stylesheet">
Voor bibliotheekonderdelen die gebruikmaken van CSS-isolatie, worden de onderdeelstijlen automatisch beschikbaar gemaakt voor de verbruikende app. U hoeft de afzonderlijke opmaakmodellen voor onderdelen of het gebundelde CSS-bestand van de bibliotheek niet handmatig te koppelen of te importeren in de app die de bibliotheek gebruikt. De app maakt gebruik van CSS-importbewerkingen om te verwijzen naar de gebundelde stijlen van de RCL. De gebundelde stijlen worden niet als een statische webresource gepubliceerd van de app die van de bibliotheek gebruikmaakt. Voor een klassebibliotheek met de naam ClassLib
en een Blazor-app met een BlazorSample.styles.css
opmaakmodel wordt het opmaakmodel van de RCL automatisch tijdens het bouwen boven aan het opmaakmodel van de app geïmporteerd.
@import '_content/ClassLib/ClassLib.bundle.scp.css';
Voor de voorgaande voorbeelden wordt het opmaakmodel van Component1
(Component1.razor.css
) automatisch gebundeld.
Component1.razor.css
in de ComponentLibrary
RCL:
.my-component {
border: 2px dashed red;
padding: 1em;
margin: 1em 0;
background-image: url('background.png');
}
De achtergrondafbeelding is ook opgenomen in de RCL-projectsjabloon en bevindt zich in de map wwwroot
van de RCL.
wwwroot/background.png
in de ComponentLibrary
RCL:
De volgende achtergrondafbeelding en stylesheet worden door het voorbeeldonderdeel Component1
van de RCL gebruikt. U hoeft deze statische assets niet toe te voegen aan een nieuwe RCL die is gemaakt op basis van de RCL-projectsjabloon, omdat deze automatisch worden toegevoegd door de projectsjabloon.
wwwroot/background.png
in de ComponentLibrary
RCL:
wwwroot/styles.css
in de ComponentLibrary
RCL:
.my-component {
border: 2px dashed red;
padding: 1em;
margin: 1em 0;
background-image: url('background.png');
}
Om de my-component
CSS-klasse van Component1
te voorzien, legt u een link naar het stylesheet van de bibliotheek in de <head>
-opmaak van de app (locatie van <head>
inhoud):
<link href="_content/ComponentLibrary/styles.css" rel="stylesheet" />
Routeerbare onderdelen beschikbaar maken vanuit de RCL
Als u routeerbare onderdelen in de RCL beschikbaar wilt maken voor directe aanvragen, moet de assembly van de RCL worden vrijgegeven aan de router van de app.
Open het App
-onderdeel van de app (App.razor
). Wijs een Assembly collectie toe aan de AdditionalAssemblies parameter van het Router onderdeel om het samenstel van de RCL op te nemen. In het volgende voorbeeld wordt het ComponentLibrary.Component1
-onderdeel gebruikt om de assembly van de RCL te detecteren.
AdditionalAssemblies="new[] { typeof(ComponentLibrary.Component1).Assembly }"
Zie ASP.NET Core Blazor routering en navigatievoor meer informatie.
Een RCL maken met statische assets in de map wwwroot
De statische assets van een RCL zijn beschikbaar voor elke app die de bibliotheek verbruikt.
Plaats statische assets in de map wwwroot
van de RCL en verwijs naar de statische assets met het volgende pad in de app: _content/{PACKAGE ID}/{PATH AND FILE NAME}
. De tijdelijke aanduiding {PACKAGE ID}
is de pakket-id van de bibliotheek. De pakket-id wordt standaard ingesteld op de assemblynaam van het project als <PackageId>
niet is opgegeven in het projectbestand. De tijdelijke aanduiding {PATH AND FILE NAME}
is het pad en de bestandsnaam onder wwwroot
. Deze padindeling wordt ook gebruikt in de app voor statische assets die worden geleverd door NuGet-pakketten die zijn toegevoegd aan de RCL.
In het volgende voorbeeld ziet u het gebruik van statische RCL-assets met een RCL met de naam ComponentLibrary
en een Blazor-app die de RCL verbruikt. De app heeft een projectreferentie voor de ComponentLibrary
RCL.
De volgende Jeep-afbeelding® wordt gebruikt in het voorbeeld van deze sectie. Als u het voorbeeld in deze sectie implementeert, klikt u met de rechtermuisknop op de afbeelding om deze lokaal op te slaan.
wwwroot/jeep-yj.png
in de ComponentLibrary
RCL:
Voeg het volgende JeepYJ
onderdeel toe aan de RCL.
JeepYJ.razor
in de ComponentLibrary
RCL:
<h3>ComponentLibrary.JeepYJ</h3>
<p>
<img alt="Jeep YJ®" src="_content/ComponentLibrary/jeep-yj.png" />
</p>
Voeg het volgende Jeep
-onderdeel toe aan de app die de ComponentLibrary
RCL gebruikt. Het Jeep
-onderdeel maakt gebruik van:
- De Jeep YJ-afbeelding® uit de
wwwroot
map van deComponentLibrary
RCL. - Het
JeepYJ
onderdeel van de RCL.
Jeep.razor
:
@page "/jeep"
@using ComponentLibrary
<div style="float:left;margin-right:10px">
<h3>Direct use</h3>
<p>
<img alt="Jeep YJ®" src="_content/ComponentLibrary/jeep-yj.png" />
</p>
</div>
<JeepYJ />
<p>
<em>Jeep</em> and <em>Jeep YJ</em> are registered trademarks of
<a href="https://www.stellantis.com">FCA US LLC (Stellantis NV)</a>.
</p>
Jeep
-onderdeel weergegeven:
Zie Herbruikbare Razor gebruikersinterface in klassebibliotheken met ASP.NET Corevoor meer informatie.
Een RCL maken met JavaScript-bestanden die gegroepeerd zijn met componenten
Samenvoegen van JavaScript-bestanden (JS) voor Razor componenten is een handige manier om scripts in een app te organiseren.
Razor onderdelen van Blazor apps die JS bestanden samenvoegen met behulp van de .razor.js
-extensie en openbaar adresseerbaar zijn met behulp van het pad naar het bestand in het project:
{PATH}/{COMPONENT}.razor.js
- De tijdelijke aanduiding
{PATH}
is het pad naar het onderdeel. - De plaatsaanduiding
{COMPONENT}
is het onderdeel.
Wanneer de app wordt gepubliceerd, verplaatst het framework het script automatisch naar de webroot. Scripts worden verplaatst naar bin/Release/{TARGET FRAMEWORK MONIKER}/publish/wwwroot/{PATH}/{COMPONENT}.razor.js
, waarbij de tijdelijke aanduidingen zijn:
-
{TARGET FRAMEWORK MONIKER}
is de Target Framework Moniker (TFM). -
{PATH}
is het pad naar het onderdeel. -
{COMPONENT}
is de naam van het onderdeel.
Er is geen wijziging vereist voor de relatieve URL van het script, omdat Blazor het JS bestand in gepubliceerde statische assets voor u plaatst.
Deze sectie en de volgende voorbeelden zijn voornamelijk gericht op het uitleggen van JS bestands collocatie. In het eerste voorbeeld ziet u een JS-bestand met een gewone JS-functie. In het tweede voorbeeld ziet u hoe een module wordt gebruikt om een functie te laden. Dit is de aanbevolen benadering voor de meeste productie-apps. Het aanroepen van JS vanuit .NET wordt volledig behandeld in JavaScript-functies aanroepen vanuit .NET-methoden in ASP.NET Core Blazor, waar de BlazorJS-API verder wordt uitgelegd met aanvullende voorbeelden. De verwijdering van componenten, die in het tweede voorbeeld aanwezig is, wordt behandeld in ASP.NET Core componentenlevenscyclusRazor.
Met het volgende JsCollocation1
onderdeel wordt een script geladen via een HeadContent
-onderdeel en wordt een JS-functie aangeroepen met IJSRuntime.InvokeAsync. De tijdelijke aanduiding {PATH}
is het pad naar het onderdeel.
Belangrijk
Als u de volgende code gebruikt voor een demonstratie in een test-app, wijzigt u de tijdelijke aanduiding {PATH}
in het pad van het onderdeel (bijvoorbeeld: Components/Pages
in .NET 8 of hoger of Pages
in .NET 7 of eerder). In een Blazor Web App (.NET 8 of hoger) vereist het onderdeel een interactieve weergavemodus die globaal is toegepast op de app of op de definitie van het onderdeel.
Voeg het volgende script toe na het Blazor script (locatie van het Blazor startscript):
<script src="{PATH}/JsCollocation1.razor.js"></script>
JsCollocation1
onderdeel ({PATH}/JsCollocation1.razor
):
@page "/js-collocation-1"
@inject IJSRuntime JS
<PageTitle>JS Collocation 1</PageTitle>
<h1>JS Collocation Example 1</h1>
<button @onclick="ShowPrompt">Call showPrompt1</button>
@if (!string.IsNullOrEmpty(result))
{
<p>
Hello @result!
</p>
}
@code {
private string? result;
public async Task ShowPrompt()
{
result = await JS.InvokeAsync<string>(
"showPrompt1", "What's your name?");
StateHasChanged();
}
}
Het JS-bestand wordt naast het JsCollocation1
onderdeelbestand geplaatst met de bestandsnaam JsCollocation1.razor.js
. In het JsCollocation1
-onderdeel wordt naar het script verwezen op het pad van het gelocaliseerde bestand. In het volgende voorbeeld accepteert de functie showPrompt1
de naam van de gebruiker van een Window prompt()
en retourneert deze naar het JsCollocation1
onderdeel voor weergave.
{PATH}/JsCollocation1.razor.js
:
function showPrompt1(message) {
return prompt(message, 'Type your name here');
}
De voorgaande benadering wordt niet aanbevolen voor algemeen gebruik in productie-apps, omdat de benadering de client vervuilt met globale functies. Een betere benadering voor productie-apps is het gebruik van JS modules. Dezelfde algemene principes zijn van toepassing op het laden van een JS-module uit een JS-bestand, zoals in het volgende voorbeeld wordt gedemonstreerde.
Met de OnAfterRenderAsync
methode van het volgende JsCollocation2
onderdeel wordt een JS module in module
geladen. Dit is een IJSObjectReference van de onderdeelklasse.
module
wordt gebruikt om de functie showPrompt2
aan te roepen. De tijdelijke aanduiding {PATH}
is het pad naar het onderdeel.
Belangrijk
Als u de volgende code gebruikt voor een demonstratie in een test-app, wijzigt u de tijdelijke aanduiding {PATH}
in het pad van het onderdeel. In een Blazor Web App (.NET 8 of hoger) vereist het onderdeel een interactieve weergavemodus die globaal is toegepast op de app of op de definitie van het onderdeel.
JsCollocation2
onderdeel ({PATH}/JsCollocation2.razor
):
@page "/js-collocation-2"
@implements IAsyncDisposable
@inject IJSRuntime JS
<PageTitle>JS Collocation 2</PageTitle>
<h1>JS Collocation Example 2</h1>
<button @onclick="ShowPrompt">Call showPrompt2</button>
@if (!string.IsNullOrEmpty(result))
{
<p>
Hello @result!
</p>
}
@code {
private IJSObjectReference? module;
private string? result;
protected async override Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
/*
Change the {PATH} placeholder in the next line to the path of
the collocated JS file in the app. Examples:
./Components/Pages/JsCollocation2.razor.js (.NET 8 or later)
./Pages/JsCollocation2.razor.js (.NET 7 or earlier)
*/
module = await JS.InvokeAsync<IJSObjectReference>("import",
"./{PATH}/JsCollocation2.razor.js");
}
}
public async Task ShowPrompt()
{
if (module is not null)
{
result = await module.InvokeAsync<string>(
"showPrompt2", "What's your name?");
StateHasChanged();
}
}
async ValueTask IAsyncDisposable.DisposeAsync()
{
if (module is not null)
{
try
{
await module.DisposeAsync();
}
catch (JSDisconnectedException)
{
}
}
}
}
In het voorgaande voorbeeld wordt JSDisconnectedException vastgezet tijdens het afvoeren van de module als het SignalR-circuit van geval Blazorverloren gaat. Als de voorgaande code wordt gebruikt in een Blazor WebAssembly-app, is er geen SignalR verbinding verloren gegaan, zodat u het try
-catch
blok kunt verwijderen en de regel kunt verlaten waarmee de module (await module.DisposeAsync();
) wordt verwijderd. Zie ASP.NET Core Blazor JavaScript-interoperabiliteit (JS interop)voor meer informatie.
{PATH}/JsCollocation2.razor.js
:
export function showPrompt2(message) {
return prompt(message, 'Type your name here');
}
Belangrijk
Plaats geen <script>
tag voor JsCollocation2.razor.js
na het Blazor script omdat de module automatisch wordt geladen en in de cache wordt opgeslagen wanneer de dynamische import()
wordt aangeroepen.
Het gebruik van scripts en modules voor JS in een Razor klassebibliotheek (RCL) wordt alleen ondersteund voor BlazorJS interopmechanisme op basis van de IJSRuntime-interface. Als u JavaScript [JSImport]
/[JSExport]
interopimplementeert, zie JavaScript JSImport/JSExport-interop met ASP.NET Core Blazor.
Voor scripts of modules die worden geleverd door een Razor klassebibliotheek (RCL) met behulp van IJSRuntimeJS interop, wordt het volgende pad gebruikt:
./_content/{PACKAGE ID}/{PATH}/{COMPONENT}.{EXTENSION}.js
- Het padsegment voor de huidige directory (
./
) is vereist om het correcte pad voor statische assets naar het JS-bestand aan te maken. - De tijdelijke aanduiding
{PACKAGE ID}
is de pakket-id van de RCL (of bibliotheeknaam voor een klassebibliotheek waarnaar wordt verwezen door de app). - De tijdelijke aanduiding
{PATH}
is het pad naar het onderdeel. Als een Razor-onderdeel zich in de wortelmap van de RCL bevindt, wordt het padsegment niet opgenomen. - De tijdelijke aanduiding
{COMPONENT}
is de naam van het onderdeel. - De placeholder
{EXTENSION}
komt overeen met de extensie van de component, ofwelrazor
ofcshtml
.
In het volgende Blazor app-voorbeeld:
- De pakket-id van de RCL is
AppJS
. - De scripts van een module worden geladen voor het
JsCollocation3
-onderdeel (JsCollocation3.razor
). - Het
JsCollocation3
onderdeel bevindt zich in de mapComponents/Pages
van de RCL.
module = await JS.InvokeAsync<IJSObjectReference>("import",
"./_content/AppJS/Components/Pages/JsCollocation3.razor.js");
Onderdelen en statische assets leveren aan meerdere gehoste Blazor-apps
Zie Meerdere gehoste ASP.NET Core Blazor WebAssembly-appsvoor meer informatie.
Browsercompatibiliteitsanalyse aan de clientzijde
Client-side apps richten zich op het volledige oppervlak van de .NET-API, maar niet alle .NET-API's worden ondersteund op WebAssembly vanwege beperkingen door de sandbox in de browser. Niet-ondersteunde API's gooien PlatformNotSupportedException bij het uitvoeren op WebAssembly. Een platformcompatibiliteitsanalyse waarschuwt de ontwikkelaar wanneer de app API's gebruikt die niet worden ondersteund door de doelplatforms van de app. Voor apps aan de clientzijde betekent dit dat wordt gecontroleerd of API's worden ondersteund in browsers. Aantekeningen toevoegen aan .NET Framework-API's voor de compatibiliteitsanalyse is een doorgaand proces, dus niet alle .NET Framework-API wordt momenteel geannoteerd.
Blazor Web Appdie Interactieve WebAssembly-onderdelen, Blazor WebAssembly-apps en RCL-projecten inschakelen automatisch browsercompatibiliteitscontroles inschakelen door browser
toe te voegen als een ondersteund platform met het SupportedPlatform
MSBuild-item. Bibliotheekontwikkelaars kunnen het SupportedPlatform
item handmatig toevoegen aan het projectbestand van een bibliotheek om de functie in te schakelen:
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
Bij het ontwerpen van een bibliotheek geeft u aan dat een bepaalde API niet wordt ondersteund in browsers door browser
op te geven voor UnsupportedOSPlatformAttribute:
using System.Runtime.Versioning;
...
[UnsupportedOSPlatform("browser")]
private static string GetLoggingDirectory()
{
...
}
Voor meer informatie, zie API's annoteren als niet-ondersteund op specifieke platforms in dedotnet/designs
GitHub-repository.
JavaScript-isolatie in JavaScript-modules
Blazor maakt JavaScript-isolatie mogelijk in standaard JavaScript-modules. JavaScript-isolatie biedt de volgende voordelen:
- Geïmporteerde JavaScript vervuilt de globale naamruimte niet meer.
- Gebruikers van de bibliotheek en onderdelen hoeven het gerelateerde JavaScript niet handmatig te importeren.
Zie JavaScript-functies aanroepen vanuit .NET-methoden in ASP.NET Core Blazorvoor meer informatie.
Vermijd het inkorten van .NET-methoden die door JavaScript kunnen worden opgeroepen.
Opnieuw koppelen tijdens runtime snijdt de .NET-methoden van het klasse-exemplaar die via JavaScript kunnen worden aangeroepen, bij, tenzij ze expliciet worden bewaard. Zie .NET-methoden aanroepen vanuit JavaScript-functies in ASP.NET Core Blazorvoor meer informatie.
Bouwen, verpakken en verzenden naar NuGet
Omdat Razor klassebibliotheken die Razor onderdelen bevatten, standaard .NET-bibliotheken zijn, is het inpakken en verzenden ervan naar NuGet niet anders dan het verpakken en verzenden van bibliotheken naar NuGet. Verpakking wordt uitgevoerd met behulp van de opdracht dotnet pack
in een opdrachtshell:
dotnet pack
Upload het pakket naar NuGet met behulp van de opdracht dotnet nuget push
in een opdrachtshell.
Handelsmerken
Jeep en Jeep YJ zijn gedeponeerde handelsmerken van FCA US LLC (Stellantis NV).