This article has been localized into Spanish by the community.
View Discovery (Descubrimiento de vistas) Conectando el Controller y View
En el inicio de este tutorial, demostre como un Controller puede regresar un View simplemente llamando el método View(). Esto incluso funciona sin parámetros, así que en este punto, te preguntarás como un Controller sabe exactamente cuales de tus Views regresar para un Action o acción en específico. La respuesta es algo llamado View Discovery (Descubrimiento de vistas) - un proceso donde ASP .NET MVC intenta suponer cual View usar, sin forzarte a especificarlo.
View Discovery trabaja cuando sigues ciertas convenciones al crear tu estructura de proyecto. Ya hemos hablado sobre esto previamente en este tutorial, donde siempre ponemos Controllers en una carpeta llamada "Controllers", Models en otra llamada "Models" y así seguimos. Las Views, debes colocarlas en una subcarpeta llamadas igual que su Controller mientras que el nombre del archivo de la View debe coincidir con el del Action o acción. Por ejemplo, sí tienes un Controller llamado "ProductController", con una acción llamada "Details", tu estructura de proyecto debería verse así:
En otras palabras, la locación y nombramiento de tus vistas debe seguir esta convención.
/Views/[nombre de Controller ]/[nombre de Action].cshtml
Sí así es, puedes simplemente llamara el método View() de tus actions del Controller y dejar que el framework .NET localice automáticamente el View apropiado para ti:
public class ProductController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult Details()
{
return View();
}
}
Sí el framework no puede encontrar un View relacionado usando la convención mencionada arriba, buscará en un lugar mas:
/Views/Shared/[Nombre de Action].cshtml
La carpeta Shared, en la cual puedes agregar tus carpetas de vistas, es usada usualmente para archivos Layout y partial views compartidas por múltiples controllers. Discutiremos esto luego, pero por ahora, la forma mas fácil es seguir la convención de estructura de carpetas descrita arriba.
Especificando un View
Sí no puedes (o no quieres) seguir la convención, puedes ayudar al framework a localizar la Vista correspondiente brindándole un parámetro al método View(). Hay dos formas: Puedes especificar solo el nombre, el cual aun requiere que sigas la convención de la estructura de carpetas, pero proporciona un View con otro nombre (míralo como un alias) como esto:
public IActionResult Test()
{
return View("Details");
}
O puedes definir la ruta completa, el cual te da la flexibilidad total cuando creas tu estructura de proyecto:
public IActionResult Test()
{
return View("/ViewFolderName/SomeFolderName/ViewName.cshtml");
}
Resumen
Sí sigues la convención especifica cuando creas tu estructura de proyecto, View Discovery le permitirá a tus Controllers automáticamente encontrar un View relacionado basado en el nombre del Controller y el Action. Sí no quieres seguir esta convención, puedes fácilmente regresar un View especifico pasando su ruta y/o nombre al método View().