asp.net acción de controlador de vista parcial MVC

Soy muy nuevo en el desarrollo de aplicaciones web y pensé que comenzaría con la tecnología más reciente, así que estoy tratando de aprender asp.net tan bien como el framework MVC a la vez. Esta es probablemente una pregunta muy simple para ustedes, profesionales de MVC.

Mi pregunta es si una vista parcial tiene una acción asociada, y si es así, ¿se invoca esta acción cada vez que una página normal utiliza RenderPartial() en la vista parcial?

Si bien puede tener una acción que devuelve una vista parcial, no necesita una acción para representar una vista parcial. RenderPartial toma la vista parcial y la representa, utilizando el modelo dado y los datos de vista si se suministran, en la vista actual (principal).

Es posible que desee una acción que devuelva una vista parcial si está usando AJAX para cargar / recargar parte de una página. En ese caso, no se desea devolver la vista completa ya que solo desea volver a cargar parte de la página. En este caso, puede hacer que la acción simplemente devuelva la vista parcial que corresponde a esa sección de la página.

Mecanismo estándar

Hacer uso de la vista parcial dentro de una vista normal (no es necesario realizar ninguna acción)

 ...some html... <% Html.RenderPartial( "Partial", Model.PartialModel ); %> ...more html.. 

Mecanismo Ajax

Recarga de parte de una página a través de AJAX (la nota parcial se muestra en línea en la carga de la página inicial)

 ...some html... 
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
...more html...

Controlador para AJAX

 public ActionResult Action(...) { var model = ... ... if (Request.IsAjaxRequest()) { return PartialView( "Partial", model.PartialModel ); } else { return View( model ); } } 

La respuesta aceptada es completamente correcta, pero quiero agregar que puedes cargar tu vista parcial usando jQuery load. Se necesita menos configuración, si no desea considerar la concurrencia.

 $("#Your-Container").load("/controller/action/id"); 

Pude lograr algo similar con esta lógica.

Dentro del .cshtml

 @Html.Action("ActionMethodName", "ControllerName"); 

Dentro del controlador

 [Route("some-action")] public ActionResult ActionMethodName() { var someModel = new SomeModel(); ... return PartialView("SomeView.cshtml", someModel); } 

Y eso es.

Si necesita pasar valores de .cshtml al método de acción, entonces es posible hacerlo.

La respuesta es no. Pero a veces necesitas alguna acción del controlador detrás de una vista parcial. Luego puede crear un actionMethod que devuelva una vista parcial. Este actionMethod se puede llamar dentro de otra vista:

 @Html.Action("StockWarningsPartial", "Stores") 

El método de acción puede verse así:

 public ActionResult StockWarningsPartial() { .... return View("StockWarningsPartial", warnings); } 

y la vista ‘StockWarningsPartial.cshtml’ comienza con:

 @{ Layout = null; } 

para que no vuelva a mostrar el diseño que lo rodea.