This article has been localized into Hungarian by the community.
View Discovery: vezérlő és nézet összekötése
A tanfolyam elején bemutattam, hogyan tud egy vezérlő nézetet visszatéríteni, pusztán a View() metódus segítségével. Ez működik paraméterek nélkül is, ezért gondolkozhatsz azon, hogyan is tudja a vezérlő, pontosan melyik nézetet kell egy bizonyos akcióval visszatéríteni. A válasz az úgynevezett View Discoveryben rejlik - ez egy folyamat, amellyel az ASP.NET MVC megpróbálja megtalálni a megfelelő nézetet anélkül, hogy neked kifejezetten meg kellene adnod azt.
A View Discovery akkor működik, ha bizonyos szabályokat betartasz a projektstruktúrában. Már beszéltünk erről korábban, amikor a vezérlőket mindig "Controllers" nevű könyvtárba tettük, modelleket pedig "Models"-be. A nézetek viszont a vezérlő után elnevezett alkönyvtárba kerülnek, nevük pedig a hozzájuk kapcsolódó akcióval kell egyezzen. Tehát ha van például egy "ProductController" nevű vezérlőd, amiben van egy "Details" nevű akciód, akkor a könyvtárstruktúrának így kell kinéznie:
Rövidebben fogalmazva, nézeteid helye és neve ezt a mintát kell kövesse:
/Views/[vezérlő neve]/[akció neve].cshtml
Ha így van, akkor csupán a View() metódust kell a vezérlőakcióidban használnod és a .NET keretrendszer automatikusan megtalálja a megfelelő nézetet:
public class ProductController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult Details()
{
return View();
}
}
Ha a keretrendszer nem találja a nézetet a fenti módszer szerint, akkor még egy helyen megpróbálja megtalálni azt:
/Views/Shared/[akció neve].cshtml
A Shared könyvtár, amit hozzátehetsz a View könyvtáradhoz, általában elrendezési fájlok és több vezérlő által használt, részleges nézetek tárolására szolgál. Ezt később alaposabban megtárgyaljuk, de egyelőre a legegyszerűbb, ha a fenti szabályokat követed.
Nézet megadása
Ha nem tudod (vagy akarod) ezeket a szabályokat követni, akkor segíthetsz a keretrendszernek a megfelelő nézet megtalálásában azzal, hogy paramétert adsz a View() metódusnak. Ennek két módja van: az egyik, hogy csak a nevet adod meg, amivel ugyanúgy követned kell a könyvtárstruktúra szabályait, viszont bármilyen nevet megadhatsz, így:
public IActionResult Test()
{
return View("Details");
}
A másik, hogy az egész útvonalat megadod, amivel bármilyen projektstruktúrát használhatsz:
public IActionResult Test()
{
return View("/ViewFolderName/SomeFolderName/ViewName.cshtml");
}
Összefoglaló
Ha egy bizonyos szabályrendszert követsz a projektstruktúrád megalkotásakor, akkor a View Discovery lehetővé teszi vezérlőid számára, hogy automatikusan megtalálják a megfelelő nézetet a vezérlő és az akció nevei alapján. Ha nem követed ezeket a szabályokat, akkor könnyedén megadhatod a nézet nevét és/vagy elérési útvonalát a View() metódusnak.