forma Ajax - - MVC volver actualización parcial vista no funciona en
-
21-08-2019
- |
-
-
21-08-2019 - |
Pregunta
Tengo una vista de índice que quiero actualizar automáticamente a medida que el usuario escribe en una ID de cliente. Tengo algo similar al trabajo (sólo se actualiza sólo una etiqueta) - pero esto no va a funcionar
.Lo que pasa es que el partial es sólo prestados por sí mismo (no en lugar de la UpdateTargetID). Lo que los datos se representa en una nueva página. Aquí está mi código:
controlador:
public ActionResult ClientList(string queryText)
{
var clients = CR.GetClientLike(queryText);
return PartialView("ClientIndex", clients);
}
Vista parcial:
<table>
<thead>
<tr>
<td>Client ID</td>
<td>Phone1</td>
<td>Phone2</td>
<td>Phone3</td>
<td>Phone4</td>
</tr>
</thead>
<tbody>
<% if (Model != null)
{
foreach (Client c in Model)
{ %>
<tr>
<td><%= Html.Encode(c.ClientID)%></td>
<td><%= Html.Encode(c.WorkPhone)%></td>
<td><%= Html.Encode(c.WorkPhone1)%></td>
<td><%= Html.Encode(c.WorkPhone2)%></td>
<td><%= Html.Encode(c.WorkPhone3)%></td>
</tr>
<% }
} %>
</tbody>
Vista principal:
insertar código en mal estado, por lo que este es sólo copiar / pegar:
$ (Function () { $ ( "# QUERYTEXT"). Keyup (function () { $ ( '# SForm') presente (.); }); });
<div id="status" class="status" name="status">
<%--<% Html.RenderPartial("ClientIndex", ViewData["clients"]); %> Should this be here???? --%>
</div>
Solución
En lugar de publicar un formulario en la página constantemente por qué no hacer un detrás de cámaras jQuery.get llamar para obtener los resultados de búsqueda para el texto proporcionado. Yo creo que esto sería más rápido y más limpio. Al presentar la forma como yo creo que está (a juzgar por mi lectura de su código) que están causando la página para actualizar esencialmente (y no volver a escribir en el div).
$('#sForm').submit()
Otros consejos
Yo tenía el mismo problema.
En mi vista parcial, tuve este
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
pero que debería haber sido este
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<Client>>" %>
una manera fácil de probar si su llamada AJAX está trabajando es devolver una cadena en lugar de un ActionResult
public string ClientList(string queryText)<
{
return("ok, the ajax call must have worked because I see this string.");
}