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.
Steve Smith, Maher JENDOUBI, Rick Anderson és Scott Sauber
A részleges nézet olyan Razor korrektúrafájl (.cshtml) irányelv nélkül @page , amely html-kimenetet jelenít meg egy másik korrektúrafájl renderelt kimenetében.
A részleges nézet kifejezés egy MVC-alkalmazás fejlesztésekor használatos, ahol a korrektúrafájlokat nézeteknek nevezzük, vagy egy Razor Oldalak alkalmazást, ahol a korrektúrafájlokat lapoknak nevezzük. Ez a témakör általánosan MVC-nézetekre és a Razor Pages lapokra mint jelölőfájlokra hivatkozik.
Mintakód megtekintése vagy letöltése (hogyan töltsd le)
Mikor érdemes részleges nézeteket használni?
A részleges nézetek hatékonyan használhatók a következőkben:
Bontsa fel a nagy korrektúrafájlokat kisebb összetevőkre.
Egy több logikai elemből álló nagy, összetett korrektúrafájlban előnyt jelent, ha az egyes darabokat részleges nézetbe különítjük el. A korrektúrafájl kódja kezelhető, mert a korrektúra csak a teljes oldalstruktúrát és a részleges nézetekre mutató hivatkozásokat tartalmazza.
Csökkentse a közös korrektúratartalmak ismétlődését a korrektúrafájlok között.
Ha ugyanazokat a korrektúraelemeket használja a korrektúrafájlokban, a részleges nézet eltávolítja a korrektúra tartalmának duplikálását egy részleges nézetfájlba. Ha a korrektúra módosul a részleges nézetben, frissíti a részleges nézetet használó korrektúrafájlok renderelt kimenetét.
A részleges nézeteket nem szabad használni a gyakori elrendezési elemek karbantartásához. A gyakori elrendezési elemeket _Layout.cshtml fájlokban kell megadni.
Ne használjon részleges nézetet, ahol összetett renderelési logikára vagy kódvégrehajtásra van szükség a korrektúra megjelenítéséhez. Részleges nézet helyett használjon nézetösszetevőt.
Részleges nézetek deklarálása
A részleges nézet egy .cshtml jelölőfájl, amely nem tartalmaz @page irányelvet, és a Nézetek mappában (MVC) vagy a Pages mappában (Razor Pages) található.
Az ASP.NET Core MVC-ben a vezérlő ViewResult képes nézetet vagy részleges nézetet visszaadni. A Razor Pagesben egy PageModel objektumként megjelenített részleges nézetet adhat PartialViewResult vissza. A részleges nézetek hivatkozását és renderelését a Hivatkozás részleges nézet szakasz ismerteti.
Az MVC nézettől vagy az oldalmegjelenítéstől eltérően a részleges nézet nem fut _ViewStart.cshtml. További információ: _ViewStart.cshtmlElrendezés a ASP.NET Core-ban.
A részleges nézetfájlnevek gyakran aláhúzásjellel (_aláhúzásjellel) kezdődnek. Ez az elnevezési konvenció nem kötelező, de segít vizuálisan megkülönböztetni a részleges nézeteket a nézetektől és a lapoktól.
A részleges nézet a .cshtmlNézetek mappában karbantartott korrektúrafájl.
A vezérlő ViewResult egy nézetet vagy parciális nézetet képes visszaadni. A részleges nézetek hivatkozását és renderelését a Hivatkozás részleges nézet szakasz ismerteti.
Az MVC-nézet renderelésével ellentétben a részleges nézet nem fut _ViewStart.cshtml. További információ: _ViewStart.cshtmlElrendezés a ASP.NET Core-ban.
A részleges nézetfájlnevek gyakran aláhúzásjellel (_aláhúzásjellel) kezdődnek. Ez az elnevezési konvenció nem kötelező, de segít vizuálisan megkülönböztetni a részleges nézeteket a nézetektől.
Egy részleges nézetre való hivatkozás
Részleges nézet használata a Pages PageModelben Razor
A ASP.NET Core 2.0-s vagy 2.1-es verziójában a következő kezelőmetódus a _AuthorPartialRP.cshtml részleges nézetét jeleníti meg a válaszhoz:
public IActionResult OnGetPartial() =>
new PartialViewResult
{
ViewName = "_AuthorPartialRP",
ViewData = ViewData,
};
A ASP.NET Core 2.2-ben vagy újabb verzióiban a kezelő metódus másik lehetőségként meghívhatja a Partial metódust egy PartialViewResult objektum létrehozásához:
public IActionResult OnGetPartial() =>
Partial("_AuthorPartialRP");
Részleges nézet használata korrektúrafájlban
A korrektúrafájlon belül többféleképpen is hivatkozhat részleges nézetre. Javasoljuk, hogy az alkalmazások az alábbi aszinkron megjelenítési módszerek egyikét használják:
A korrektúrafájlon belül két módon hivatkozhat részleges nézetre:
Javasoljuk, hogy az alkalmazások az Aszinkron HTML-segédet használják.
Részleges címkesegítő
A részleges címkesegítő használatához ASP.NET Core 2.1 vagy újabb verzió szükséges.
A Részleges címke segéd aszinkron módon jeleníti meg a tartalmat, és HTML-szerű szintaxist használ:
<partial name="_PartialName" />
Fájlkiterjesztés esetén a Címkesegítő egy részleges nézetre hivatkozik, amely ugyanabban a mappában kell lennie, mint a részleges nézetet hívó korrektúrafájlnak:
<partial name="_PartialName.cshtml" />
Az alábbi példa egy részleges nézetre hivatkozik az alkalmazás gyökeréből. A tilde-perjellel (~/) vagy perjellel (/) kezdődő elérési utak az alkalmazás gyökerére vonatkoznak:
Razor Oldalak
<partial name="~/Pages/Folder/_PartialName.cshtml" />
<partial name="/Pages/Folder/_PartialName.cshtml" />
MVC
<partial name="~/Views/Folder/_PartialName.cshtml" />
<partial name="/Views/Folder/_PartialName.cshtml" />
Az alábbi példa egy relatív elérési úttal rendelkező részleges nézetre hivatkozik:
<partial name="../Account/_PartialName.cshtml" />
További információ: Részleges címkesegítő a ASP.NET Core-ban.
Aszinkron HTML-segéd
HTML segéd használata esetén az ajánlott eljárás a PartialAsync használata.
PartialAsync egy IHtmlContent-be csomagolt Task<TResult> típust ad vissza. A metódusra a várt hívás előtagjának karakterrel @ történő előtagolásával hivatkozunk:
@await Html.PartialAsync("_PartialName")
Ha a fájlkiterjesztés jelen van, a HTML-segéd egy részleges nézetre hivatkozik, amely ugyanabban a mappában kell lennie, mint a részleges nézetet hívó korrektúrafájlnak:
@await Html.PartialAsync("_PartialName.cshtml")
Az alábbi példa egy részleges nézetre hivatkozik az alkalmazás gyökeréből. A tilde-perjellel (~/) vagy perjellel (/) kezdődő elérési utak az alkalmazás gyökerére vonatkoznak:
Razor Oldalak
@await Html.PartialAsync("~/Pages/Folder/_PartialName.cshtml")
@await Html.PartialAsync("/Pages/Folder/_PartialName.cshtml")
MVC
@await Html.PartialAsync("~/Views/Folder/_PartialName.cshtml")
@await Html.PartialAsync("/Views/Folder/_PartialName.cshtml")
Az alábbi példa egy relatív elérési úttal rendelkező részleges nézetre hivatkozik:
@await Html.PartialAsync("../Account/_LoginPartial.cshtml")
Másik lehetőségként egy részleges nézetet is megjeleníthet a használatával RenderPartialAsync. Ez a metódus nem ad vissza egy IHtmlContent. Közvetlenül a válaszba streameli a renderelt kimenetet. Mivel a metódus nem ad vissza eredményt, kódblokkon belül Razor kell meghívni:
@{
await Html.RenderPartialAsync("_AuthorPartial");
}
Mivel RenderPartialAsync a streamek renderelt tartalmakat tartalmaznak, bizonyos helyzetekben jobb teljesítményt nyújt. Teljesítmény szempontjából kritikus helyzetekben mindkét megközelítéssel mérje fel az oldalt, és használja a gyorsabb választ generáló megközelítést.
Szinkron HTML-segéd
Partial és RenderPartial azok szinkron megfelelői PartialAsyncRenderPartialAsync. A szinkron megfelelők használata nem ajánlott, mert vannak olyan forgatókönyvek, amelyekben holtpontot jelentenek. A szinkron metódusok a jövőbeli kiadásokban való eltávolításra vannak megcélzva.
Important
Ha kódot kell végrehajtania, használjon nézetösszetevőt részleges nézet helyett.
Hívás Partial vagy RenderPartial eredményez egy Visual Studio elemező figyelmeztetést. Például a Partial jelenléte a következő figyelmeztető üzenetet eredményezi:
Az IHtmlHelper.Partial használata alkalmazás holtpontot eredményezhet. Fontolja meg a részleges< címkesegítő vagy az IHtmlHelper.PartialAsync használatát>.
Cserélje le a @Html.Partial hívásokat a @await Html.PartialAsync vagy a Részleges címke segédre. A részleges címkesegítő migrálásáról további információt a HTML-segédből történő migrálás című témakörben talál.
Részleges nézetfelderítés
Ha egy részleges nézetre fájlkiterjesztés nélküli név hivatkozik, a rendszer a következő helyeket keresi a megadott sorrendben:
Razor Oldalak
- A lap mappájának jelenleg történő végrehajtása
- Könyvtárdiagram a mappa felett az oldalon
/Shared/Pages/Shared/Views/Shared
MVC
/Areas/<Area-Name>/Views/<Controller-Name>/Areas/<Area-Name>/Views/Shared/Views/Shared/Pages/Shared
/Areas/<Area-Name>/Views/<Controller-Name>/Areas/<Area-Name>/Views/Shared/Views/Shared
A részleges nézetfelderítésre a következő konvenciók vonatkoznak:
- Az azonos fájlnévvel rendelkező különböző részleges nézetek akkor engedélyezettek, ha a részleges nézetek különböző mappákban találhatók.
- Ha fájlkiterjesztés nélkül hivatkozik egy részleges nézetre, és a részleges nézet a hívó mappájában és a Megosztott mappában is jelen van, a hívó mappájának részleges nézete biztosítja a részleges nézetet. Ha a részleges nézet nem található a hívó mappájában, a részleges nézet a Megosztott mappából lesz megadva. A Megosztott mappa részleges nézeteit megosztott részleges nézeteknek vagy alapértelmezett részleges nézeteknek nevezzük.
- A részleges nézetek láncoltak lehetnek – a részleges nézet egy másik részleges nézetet is meghívhat, ha a hívások nem körkörös hivatkozást alkotnak. A relatív elérési utak mindig az aktuális fájlhoz vannak viszonyítva, nem pedig a fájl gyökeréhez vagy szülőéhez.
Note
A Razorsection részleges nézetben definiált elem nem látható a szülő jelölő fájlok számára. Csak abban a részleges nézetben látható a section, amelyben definiálva van.
Adatok elérése részleges nézetekből
Ha egy részleges nézet példányosítva van, megkapja a szülő szótárának ViewData. A részleges nézetben lévő adatok frissítései nem maradnak meg a szülőnézetben.
ViewData a részleges nézet változásai elvesznek, amikor a részleges nézet visszatér.
Az alábbi példa bemutatja, hogyan adhat át egy példányt ViewDataDictionary egy részleges nézetnek:
@await Html.PartialAsync("_PartialName", customViewData)
Egy modellt részleges nézetbe is átadhat. A modell lehet egyéni objektum. Átadhat egy modellt PartialAsync (tartalomblokkot jelenít meg a hívónak), vagy RenderPartialAsync (a tartalmat a kimenetre streameli):
@await Html.PartialAsync("_PartialName", model)
Razor Oldalak
A mintaalkalmazásban a következő korrektúra az Pages/ArticlesRP/ReadRP.cshtml oldalról származik. A lap két részleges nézetet tartalmaz. A második részleges nézet egy modellben és ViewData a részleges nézetben halad át. A ViewDataDictionary konstruktor túlterhelése egy új ViewData szótár átadására szolgál, miközben megtartja a meglévő ViewData szótárat.
@model ReadRPModel
<h2>@Model.Article.Title</h2>
@* Pass the author's name to Pages\Shared\_AuthorPartialRP.cshtml *@
@await Html.PartialAsync("../Shared/_AuthorPartialRP", Model.Article.AuthorName)
@Model.Article.PublicationDate
@* Loop over the Sections and pass in a section and additional ViewData to
the strongly typed Pages\ArticlesRP\_ArticleSectionRP.cshtml partial view. *@
@{
var index = 0;
foreach (var section in Model.Article.Sections)
{
await Html.PartialAsync("_ArticleSectionRP",
section,
new ViewDataDictionary(ViewData)
{
{ "index", index }
});
index++;
}
}
Pages/Shared/_AuthorPartialRP.cshtml az első részleges nézet, amelyet a ReadRP.cshtml jelölőfájl hivatkozik:
@model string
<div>
<h3>@Model</h3>
This partial view from /Pages/Shared/_AuthorPartialRP.cshtml.
</div>
Pages/ArticlesRP/_ArticleSectionRP.cshtml a ReadRP.cshtml jelölőfájl által hivatkozott második részleges nézet:
@using PartialViewsSample.ViewModels
@model ArticleSection
<h3>@Model.Title Index: @ViewData["index"]</h3>
<div>
@Model.Content
</div>
MVC
A mintaalkalmazás alábbi jelölőnyelve megmutatja a Views/Articles/Read.cshtml nézetet. A nézet két részleges nézetet tartalmaz. A második részleges nézet egy modellben és ViewData a részleges nézetben halad át. A ViewDataDictionary konstruktor túlterhelése egy új ViewData szótár átadására szolgál, miközben megtartja a meglévő ViewData szótárat.
@model PartialViewsSample.ViewModels.Article
<h2>@Model.Title</h2>
@* Pass the author's name to Views\Shared\_AuthorPartial.cshtml *@
@await Html.PartialAsync("_AuthorPartial", Model.AuthorName)
@Model.PublicationDate
@* Loop over the Sections and pass in a section and additional ViewData to
the strongly typed Views\Articles\_ArticleSection.cshtml partial view. *@
@{
var index = 0;
foreach (var section in Model.Sections)
{
@(await Html.PartialAsync("_ArticleSection",
section,
new ViewDataDictionary(ViewData)
{
{ "index", index }
}))
index++;
}
}
Views/Shared/_AuthorPartial.cshtml az első részleges nézet, amelyet a Read.cshtml jelölőfájl hivatkozik:
@model string
<div>
<h3>@Model</h3>
This partial view from /Views/Shared/_AuthorPartial.cshtml.
</div>
Views/Articles/_ArticleSection.cshtml a Read.cshtml jelölőfájl által hivatkozott második részleges nézet:
@using PartialViewsSample.ViewModels
@model ArticleSection
<h3>@Model.Title Index: @ViewData["index"]</h3>
<div>
@Model.Content
</div>
Futásidőben a rendszer a részeket a szülő korrektúrafájl renderelt kimenetében jeleníti meg, amely maga is a megosztott _Layout.cshtmlfájlon belül jelenik meg. Az első részleges nézet megjeleníti a cikk szerzőjének nevét és közzétételének dátumát:
Abraham Lincoln
Ez a részleges nézet egy megosztott részleges nézetfájl elérési útjából származik<>. 1863. 11. 19. 12:00:00
A második részleges nézet a cikk szakaszait jeleníti meg:
Első szakasz indexe: 0
Nyolcvanhét évvel ezelőtt ...
Második szakasz indexe: 1
Most már elmerültünk egy nagy polgárháborúban, amely próbára teszi ...
Harmadik szakasz indexe: 2
De tágabb értelemben véve nem tudunk szentelni ...
További erőforrások
- Razor ASP.NET Core szintaxisának referenciája
- Tag Segédprogramok az ASP.NET Core-ban
- Részleges címkesegítő a ASP.NET Core-ban
- Összetevők megtekintése a ASP.NET Core-ban
- ASP.NET Core területei
- Razor ASP.NET Core szintaxisának referenciája
- Összetevők megtekintése a ASP.NET Core-ban
- ASP.NET Core területei