Quiero usar ajax para evitar actualizar mis páginas y para esto quiero devolver Vistas por el método PartialView del controlador en la llamada ajax.
la pregunta es:
View como Vista PartialView ?PartialView en Controller ? Por ejemplo, para la vista _Index en Views/BasicInfo/_Index path, intento PartialView("~/Views/BasicInfo/_Index"); , PartialView("~/Views/BasicInfo/_Index.chtml"); , PartialView("BasicInfo/_Index"); , y obtiene el error de no encontrar la vista
EDITAR
Cómo se especificó el nombre de la vista en el método PartialView, si la vista está en una carpeta fuera de la carpeta compartida y fuera de la carpeta de vista relacionada. Por ejemplo, Mi controlador se llama controlador1 y mi Vista está en esta ruta Views/BasicInfo/_Index ?
deberías tener esto
micontrolador
Puntos de vista
Donde:
Index.cshtml como vista completa habrá representado la vista parcial con el modelo pasado (¿por qué? Para evitar la duplicación de código)
@model YourModelType @{ ViewBag.Title = "View Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } @Html.Partial("IndexPartial", Model)IndexPartial.cshtml es la vista parcial, algo así como
@model YourModelType <h2>Some Title</h2> <div> <h4>YourModel</h4> <hr /> <dl class="dl-horizontal"> <dt> @Html.DisplayNameFor(model => model.Property1) </dt> <dd> @Html.DisplayFor(model => model.Property1) </dd> <dt> @Html.DisplayNameFor(model => model.Property2) </dt> <dd> @Html.DisplayFor(model => model.Property2) </dd> </dl>Ahora, cuando desee la vista completa, use MyController/Index y cuando desee la vista parcial, puede obtenerla con MyController/IndexPartial.
O puede usar el parámetro en su acción para especificar la salida:
public ActionResult GetMyView(bool? partial) { var model = something; if (partial != null && partial) { return PartialView("MyViewPartial", model) } return View("MyView", model); }llamar a parcial = yourHost/controller/GetMyView?partial=true
Ahora volviendo a su pregunta, sí, puede devolver la Vista parcial como Vista y viceversa. Pero enfrentará problemas al agregar html a las páginas a través de ajax (html incompleto o sobrecargado).
puedes usar :
public PartialViewResult ActionMethodName() { return PartialView("_Index.chtml"); }O
public ActionResult ActionMethodName() { return PartialView("_Index.chtml"); }No hay limitación y no se considera mala práctica.
Tiene un error tipográfico en la PartialView("~/Views/BasicInfo/_Index.chtml") de su pregunta.
Debe escribir return PartialView("~/Views/BasicInfo/_Index.cshtml")