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>
¿Fue útil?

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.");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top