Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Készítette: Rick Anderson
Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.
Az RCL esetében az npm és a webpack buildfolyamatba való integrálásáról bővebb információkat a "Kliensoldali webes eszközök összeállítása az osztálykönyvtáradhoz" című témakörben talál.
Razor felhasználói felületet tartalmazó osztálytár létrehozása
- A Visual Studióból válassza az Új projekt létrehozása lehetőséget .
- Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
- Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik
.Views-ra. - Válassza a támogatási lapokat és nézeteket, amennyiben szüksége van olyan könyvtárra, amely lapokat és/vagy nézeteket tartalmaz. Alapértelmezés szerint csak Razor összetevők támogatottak. Válassza a Create gombot.
A Razor osztálykönyvtár sablon alapértelmezés szerint a Razor összetevő-fejlesztéshez használatos. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket. A BlazorRCL-támogatásával kapcsolatos további információkért lásd: ASP.NET Core Razor összetevőinek felhasználása Razor osztálykódtárból (RCL).
Adjon hozzá Razor fájlokat az RCL-hez.
A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Az alábbi RCL-oldalak elrendezésénél hozzunk létre egy RCL-t, amely a tartalmat ~/Pages teszi elérhetővé, nem pedig ~/Areas/Pages.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj. Nézze meg a dotnet-add reference.
Nézetek, részleges nézetek és lapok felülírása
Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.
A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.
Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Építse fel és futtassa az alkalmazást, hogy ellenőrizze, az alkalmazásban a részleges verzió használatban van-e.
Ha az RCL Razor oldalakat használ, engedélyezze a Razor Pages-szolgáltatásokat és -végpontokat az üzemeltetési alkalmazásban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
RCL-lapok elrendezése
Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.
@{
Layout = "_Layout";
}
RCL létrehozása statikus eszközökkel
Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.
Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.
RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.
Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.
Ügyfél webes eszközeinek hozzáadása a buildelési folyamathoz
Az ügyfél webes eszközeinek a buildelési folyamatba való integrálása nemtriviális. További információt Az Razor Osztálytár ügyfél-webes eszközeinek létrehozása című témakörben talál.
Statikus eszközök kizárása
Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.
Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript-integráció
TypeScript-fájlok felvétele RCL-fájlba:
A projektben hivatkozzon a
Microsoft.TypeScript.MSBuildNuGet-csomagra.Note
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
Helyezze a TypeScript-fájlokat (
.ts) awwwrootmappán kívülre. Helyezze például a fájlokat egyClientmappába.Adja hozzá a következő korrektúrát a projektfájlhoz:
- Konfigurálja az
wwwrootmappa TypeScript buildkimenetét aTypescriptOutDirtulajdonsággal. - Adja hozzá a TypeScript-célt a
PrepareForBuildDependsOn-cél függőségeként. - Távolítsa el a kimenetet a
wwwroot folderszekcióból.
- Konfigurálja az
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
// Markup removed for brevity.
<TypescriptOutDir>wwwroot</TypescriptOutDir>
<PrepareForBuildDependsOn>
CompileTypeScriptWithTSConfig;
GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn)
</PrepareForBuildDependsOn>
</PropertyGroup>
<ItemGroup>
<Content Remove="wwwroot\{path-to-typescript-outputs}" />
</ItemGroup>
</Project>
Hivatkozott RCL-ből származó tartalom felhasználása
Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.
A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak engedélyeznie kell a statikus fájlok támogatását a következő helyen:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő eszközöket szeretne támogatni a buildkimenetből futtatáskor, hívja meg a UseStaticWebAssets a hosztépítőben a Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseWebRoot("wwwroot");
builder.WebHost.UseStaticWebAssets();
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.
Többprojektes fejlesztési folyamat
A fogyasztóalkalmazás futtatásakor:
- Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
- Az RCL
wwwrootmappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.
Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.
Publish
Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.
További erőforrások
Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.
Az npm és a webpack építési folyamatba történő integrálásáról az Razor osztálykönyvtár esetén további információt az Ügyféloldali webes eszközök létrehozása az Razor osztálykönyvtárhozcímű témakörben talál.
Razor felhasználói felületet tartalmazó osztálytár létrehozása
- A Visual Studióból válassza az Új projekt létrehozása lehetőséget .
- Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
- Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik
.Views-ra. - Ha a nézetek támogatására van szükség, válassza a támogatási oldalakat és nézeteket. Alapértelmezés szerint csak Razor lapok támogatottak. Válassza a Create gombot.
Az Razor osztálykönyvtár (RCL) sablon alapértelmezés szerint a Razor komponensfejlesztéshez van beállítva. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket.
Adjon hozzá Razor fájlokat az RCL-hez.
A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Az alábbi RCL-oldalak elrendezésénél hozzunk létre egy RCL-t, amely a tartalmat ~/Pages teszi elérhetővé, nem pedig ~/Areas/Pages.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj. Nézze meg a dotnet-add reference.
Nézetek, részleges nézetek és lapok felülírása
Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.
A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.
Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Építse fel és futtassa az alkalmazást, hogy ellenőrizze, az alkalmazásban a részleges verzió használatban van-e.
Ha az RCL Razor oldalakat használ, engedélyezze a Razor Pages-szolgáltatásokat és -végpontokat az üzemeltetési alkalmazásban:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
RCL-lapok elrendezése
Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.
@{
Layout = "_Layout";
}
RCL létrehozása statikus eszközökkel
Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.
Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.
RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.
Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.
Statikus eszközök kizárása
Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.
Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript-integráció
TypeScript-fájlok felvétele RCL-fájlba:
A projektben hivatkozzon a
Microsoft.TypeScript.MSBuildNuGet-csomagra.Note
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
Helyezze a TypeScript-fájlokat (
.ts) awwwrootmappán kívülre. Helyezze például a fájlokat egyClientmappába.Konfigurálja a TypeScript build kimenetét a
wwwrootmappához. Állítsa be aTypescriptOutDirtulajdonságot egyPropertyGroup-ben a projektfájlban:<TypescriptOutDir>wwwroot</TypescriptOutDir>Adja hozzá a TypeScript célpontot a
PrepareForBuildDependsOn-cél függőségeként a projektfájlban lévőPropertyGroupcélon belül a következő cél hozzáadásával:<PrepareForBuildDependsOn> CompileTypeScript; GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn) </PrepareForBuildDependsOn>
Hivatkozott RCL-ből származó tartalom felhasználása
Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.
A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak engedélyeznie kell a statikus fájlok támogatását a következő helyen:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő eszközöket szeretne támogatni a buildkimenetből futtatáskor, hívja meg a UseStaticWebAssets a hosztépítőben a Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssets();
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Megjegyzés: .NET 6 csak builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssetshívását igényli. További információ: a GitHub-probléma.
Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.
Többprojektes fejlesztési folyamat
A fogyasztóalkalmazás futtatásakor:
- Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
- Az RCL
wwwrootmappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.
Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.
Publish
Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.
További erőforrások
Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.
Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)
Razor felhasználói felületet tartalmazó osztálytár létrehozása
- A Visual Studióban válassza Új projekt létrehozásalehetőséget.
- Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
- Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás>Tovább. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik
.Views-ra. - Válassza ki a Célkeretrendszert. Ellenőrizze ☑ a támogatási lapokat és a nézeteket a nézetek támogatásához. Alapértelmezés szerint csak Razor összetevők támogatottak. Válassza a Create gombot.
Az Razor osztálykönyvtár (RCL) sablon alapértelmezésként a Razor összetevők fejlesztésére szolgál. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket.
Adjon hozzá Razor fájlokat az RCL-hez.
A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Tekintse meg a RCL-lapok elrendezését, hogy létrehozhasson egy RCL-t, amely a tartalmat a ~/Pageshelyett a ~/Areas/Pages-ben jeleníti meg.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj. Nézze meg a dotnet-add reference.
Nézetek, részleges nézetek és lapok felülírása
Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.
A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.
Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Építse fel és futtassa az alkalmazást, hogy ellenőrizze, az alkalmazásban a részleges verzió használatban van-e.
RCL-lapok elrendezése
Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.
@{
Layout = "_Layout";
}
RCL létrehozása statikus eszközökkel
Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.
Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.
RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.
Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.
Statikus eszközök kizárása
Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.
Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript-integráció
TypeScript-fájlok felvétele RCL-fájlba:
A projektben hivatkozzon a
Microsoft.TypeScript.MSBuildNuGet-csomagra.Note
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
Helyezze a TypeScript-fájlokat (
.ts) awwwrootmappán kívülre. Helyezze például a fájlokat egyClientmappába.Konfigurálja a TypeScript build kimenetét a
wwwrootmappához. Állítsa be aTypescriptOutDirtulajdonságot egyPropertyGroup-ben a projektfájlban:<TypescriptOutDir>wwwroot</TypescriptOutDir>Adja hozzá a TypeScript célpontot a
ResolveCurrentProjectStaticWebAssets-cél függőségeként a projektfájlban lévőPropertyGroupcélon belül a következő cél hozzáadásával:<ResolveCurrentProjectStaticWebAssetsInputsDependsOn> CompileTypeScript; $(ResolveCurrentProjectStaticWebAssetsInputs) </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
Hivatkozott RCL-ből származó tartalom felhasználása
Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.
A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak aktiválnia kell a statikus fájltámogatást Startup.Configure:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő eszközöket szeretne támogatni a buildkimenetből futtatáskor, hívja meg a UseStaticWebAssets a hosztépítőben a Program.cs.
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStaticWebAssets();
webBuilder.UseStartup<Startup>();
});
}
Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.
Többprojektes fejlesztési folyamat
A fogyasztóalkalmazás futtatásakor:
- Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
- Az RCL
wwwrootmappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.
Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.
Publish
Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.
További erőforrások
Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.
Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)
Razor felhasználói felületet tartalmazó osztálytár létrehozása
- A Visual Studio Fájl menüjében válassza Új>Projectlehetőséget.
- Válassza ASP.NET Core Web Applicationlehetőséget.
- Nevezze el a könyvtárat (például "RazorClassLib") >OK. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik
.Views-ra. - Ellenőrizze, hogy ASP.NET Core 2.1 vagy újabb van-e kiválasztva.
- Válassza Razor Osztálykönyvtár>OKlehetőséget.
Az RCL-nek a következő projektfájlja van:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
Adjon hozzá Razor fájlokat az RCL-hez.
A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Tekintse meg a RCL-lapok elrendezését, hogy létrehozhasson egy RCL-t, amely a tartalmat a ~/Pageshelyett a ~/Areas/Pages-ben jeleníti meg.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj. Nézze meg a dotnet-add reference.
Útmutató: RCL-projekt létrehozása és használata Razor Pages-projektből
A teljes projekt letöltése és tesztelése egyszerűbb, mint a létrehozása. A mintaletöltés további kódot és hivatkozásokat tartalmaz, amelyek megkönnyítik a projekt tesztelését. Hagyhat visszajelzést ebben a GitHub-kérdésben a letöltési mintákról és a lépésenkénti útmutatókkal kapcsolatos megjegyzéseivel.
A letöltési alkalmazás tesztelése
Ha még nem töltötte le a kész alkalmazást, és inkább az útmutató projektet szeretné létrehozni, ugorjon a következő szakaszra.
Nyissa meg a .sln fájlt a Visual Studióban. Futtasd az alkalmazást.
Kövesse a Teszt WebApp1 utasításait.
RCL létrehozása
Ebben a szakaszban létrejön egy RCL. Razor fájlok hozzáadódnak az RCL-hez.
Hozza létre az RCL-projektet:
- A Visual Studio Fájl menüjében válassza Új>Projectlehetőséget.
- Válassza ASP.NET Core Web Applicationlehetőséget.
- Nevezze el az alkalmazást RazorUIClassLib>OK.
- Ellenőrizze, hogy ASP.NET Core 2.1 vagy újabb van-e kiválasztva.
- Válassza Razor Osztálykönyvtár>OKlehetőséget.
- Adjon hozzá egy Razor
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtmlnevű részleges nézetfájlt.
Razor fájlok és mappák hozzáadása a projekthez
Cserélje le a
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtmljelölést a következő kódra:<h3>_Message.cshtml partial view.</h3> <p>RazorUIClassLib\Areas\MyFeature\Pages\Shared\_Message.cshtml</p>Cserélje le a
RazorUIClassLib/Areas/MyFeature/Pages/Page1.cshtmljelölést a következő kódra:@page @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers <h2>Hello from a Razor UI class library!</h2> <p> From RazorUIClassLib\Areas\MyFeature\Pages\Page1.cshtml</p> <partial name="_Message" />@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpersszükséges a részleges nézet (<partial name="_Message" />) használatához. A@addTagHelperirányelv hozzáadása helyett hozzáadhat egy_ViewImports.cshtmlfájlt. Például:dotnet new viewimports -o RazorUIClassLib/Areas/MyFeature/PagesA
_ViewImports.cshtmlkapcsolatos további információkért lásd: Megosztott irányelvek importálásaHozza létre az osztálytárat annak ellenőrzéséhez, hogy nincsenek-e fordítóhibák:
dotnet build RazorUIClassLib
A build kimenete RazorUIClassLib.dll-t és RazorUIClassLib.Views.dll-et tartalmaz.
RazorUIClassLib.Views.dll tartalmazza az összeállított Razor tartalmat.
A Razor felhasználói felületi kódtár használata egy Razor Pages-projektből
Hozza létre a Razor Pages webalkalmazást:
A Megoldáskezelőterületen kattintson a jobb gombbal a megoldásra, >>Új projekthozzáadása parancsot.
Válassza ASP.NET Core Web Applicationlehetőséget.
Az alkalmazás neve WebApp1.
Ellenőrizze, hogy ASP.NET Core 2.1 vagy újabb van-e kiválasztva.
Válassza webalkalmazást>OK.
A Megoldáskezelőbenkattintson a jobb gombbal a WebApp1 elemre, és válassza a Beállítás Induló Projektkéntlehetőséget.
A Megoldáskezelőmenüben kattintson a jobb gombbal a WebApp1 elemre, és válassza a Build Dependencies>Project Dependencieslehetőséget.
Ellenőrizze a WebApp1függőségeként a RazorUIClassLib-et.
A Megoldáskezelőmenüben kattintson a jobb gombbal a WebApp1 elemre, és válassza >hivatkozás hozzáadásalehetőséget.
A Reference Manager párbeszédpanelen ellenőrizze RazorUIClassLib>OK.
Futtasd az alkalmazást.
A WebApp1 tesztelése
Keressen rá a /MyFeature/Page1-ra, hogy ellenőrizze, használatban van-e a Razor felhasználói felületi osztálytár.
Nézetek, részleges nézetek és lapok felülírása
Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.
A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.
Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Építse fel és futtassa az alkalmazást, hogy ellenőrizze, az alkalmazásban a részleges verzió használatban van-e.
RCL-lapok elrendezése
Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.
Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)
Razor felhasználói felületet tartalmazó osztálytár létrehozása
- A Visual Studióból válassza az Új projekt létrehozása lehetőséget .
- Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
- Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik
.Views-ra. - Ha a nézetek támogatására van szükség, válassza a támogatási oldalakat és nézeteket. Alapértelmezés szerint csak Razor lapok támogatottak. Válassza a Create gombot.
Az Razor osztálykönyvtár (RCL) sablon alapértelmezésként a Razor összetevők fejlesztésére szolgál. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket.
Adjon hozzá Razor fájlokat az RCL-hez.
A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Az alábbi RCL-oldalak elrendezésénél hozzunk létre egy RCL-t, amely a tartalmat ~/Pages teszi elérhetővé, nem pedig ~/Areas/Pages.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj. Nézze meg a dotnet-add reference.
Nézetek, részleges nézetek és lapok felülírása
Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.
A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.
Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Építse fel és futtassa az alkalmazást, hogy ellenőrizze, az alkalmazásban a részleges verzió használatban van-e.
Ha az RCL Razor oldalakat használ, engedélyezze a Razor Pages-szolgáltatásokat és -végpontokat az üzemeltetési alkalmazásban:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
RCL-lapok elrendezése
Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.
@{
Layout = "_Layout";
}
RCL létrehozása statikus eszközökkel
Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.
Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.
RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.
Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.
Statikus eszközök kizárása
Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.
Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript-integráció
TypeScript-fájlok felvétele RCL-fájlba:
A projektben hivatkozzon a
Microsoft.TypeScript.MSBuildNuGet-csomagra.Note
A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.
Helyezze a TypeScript-fájlokat (
.ts) awwwrootmappán kívülre. Helyezze például a fájlokat egyClientmappába.Konfigurálja a TypeScript build kimenetét a
wwwrootmappához. Állítsa be aTypescriptOutDirtulajdonságot egyPropertyGroup-ben a projektfájlban:<TypescriptOutDir>wwwroot</TypescriptOutDir>Adja hozzá a TypeScript célpontot a
ResolveCurrentProjectStaticWebAssets-cél függőségeként a projektfájlban lévőPropertyGroupcélon belül a következő cél hozzáadásával:<ResolveCurrentProjectStaticWebAssetsInputsDependsOn> CompileTypeScript; $(ResolveCurrentProjectStaticWebAssetsInputs) </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
Hivatkozott RCL-ből származó tartalom felhasználása
Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.
A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak aktiválnia kell a statikus fájltámogatást Startup.Configure:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő eszközöket szeretne támogatni a buildkimenetből futtatáskor, hívja meg a UseStaticWebAssets a hosztépítőben a Program.cs.
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStaticWebAssets();
webBuilder.UseStartup<Startup>();
});
}
Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.
Többprojektes fejlesztési folyamat
A fogyasztóalkalmazás futtatásakor:
- Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
- Az RCL
wwwrootmappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.
Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.
Publish
Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.