Domanda

Ho un indice di visualizzazione che si desidera aggiornare automaticamente l'utente digita un id client.Ho avuto qualcosa di simile per il lavoro (solo che era l'aggiornamento del solo un'etichetta), ma questo non funzionerà.

Quello che succede è che il parziale è appena reso di per sé (non in luogo del UpdateTargetID).Quindi i dati vengono visualizzati su una nuova pagina.Ecco il mio codice:

Controller:

public ActionResult ClientList(string queryText)
    {
        var clients = CR.GetClientLike(queryText);
        return PartialView("ClientIndex", clients);
    }

Vista Parziale:

<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 Principale:

Inserire il codice incasinato, quindi questo è solo copia/incollato:

$(function() { $("#queryText").keyup(function() { $('#sForm').submit();});});

  <div id="status" class="status" name="status">
    <%--<% Html.RenderPartial("ClientIndex", ViewData["clients"]); %> Should this be here???? --%>

  </div>
È stato utile?

Soluzione

Invece di inviare un modulo nella pagina costantemente perché non fare un dietro le quinte jQuery.get chiamare per ottenere i risultati di ricerca per il testo fornito. Vorrei che questo sarebbe più veloce e pulito. Al momento della presentazione del modulo, come penso che si sta (a giudicare dalla mia lettura del codice) si stanno causando la pagina per aggiornare essenzialmente (e non ri-scrivere il div).

$('#sForm').submit()

Altri suggerimenti

Ho avuto lo stesso problema.

A mia parziale vista, ho avuto questo

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

ma dovrebbe essere questo

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<Client>>" %>

un modo semplice per verificare se la chiamata ajax sta lavorando è quello di restituire una stringa invece di un ActionResult

public string ClientList(string queryText)<
{
    return("ok, the ajax call must have worked because I see this string.");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top