MVC - Ajax Form - Rückteilansicht doesnt Update in
-
21-08-2019
- |
-
-
21-08-2019 - |
Frage
Ich habe einen Index Ansicht, dass ich automatisch während der Benutzer tippt in einer Client-ID aktualisieren möchten. Ich habe etwas ähnlich zu arbeiten (nur wurde die Aktualisierung nur ein Etikett) - aber das wird nicht funktionieren
.Was passiert ist, die teilweise nur durch sich selbst (nicht anstelle des UpdateTargetID) wiedergegeben wird. So werden die Daten auf einer neuen Seite gerendert. Hier ist mein Code:
Controller:
public ActionResult ClientList(string queryText)
{
var clients = CR.GetClientLike(queryText);
return PartialView("ClientIndex", clients);
}
Teilansicht:
<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>
Hauptansicht:
Fügen Sie Code vermasselt, so ist dies nur kopiert / eingefügt:
$ (Function () { $ ( "# QUERY"). Keyup (function () { $ ( '# SForm') submit (). }); });
<div id="status" class="status" name="status">
<%--<% Html.RenderPartial("ClientIndex", ViewData["clients"]); %> Should this be here???? --%>
</div>
Lösung
Anstatt ein Formular auf der Seite ständig zu veröffentlichen, warum eine hinter den Kulissen nicht jQuery.get rufen Sie die Suchergebnisse für den zur Verfügung gestellten Text zu bekommen. Ich würde denken, dies wäre schneller und sauberer. Wenn Sie das Formular absenden, wie ich glaube, Sie sind (aus meiner Lektüre Ihrer Kodebeurteilungsschaltung) Sie die Seite (und nicht neu zu schreiben, um die div) im Wesentlichen zu aktualisieren verursachen.
$('#sForm').submit()
Andere Tipps
Ich hatte das gleiche Problem.
In meiner Teilansicht, hatte ich diese
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
, aber es sollte das gewesen sein
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<Client>>" %>
eine einfache Möglichkeit zu testen, ob Ihr Ajax-Aufruf arbeitet, ist eine Zeichenfolge anstelle einer Action zurückzukehren
public string ClientList(string queryText)<
{
return("ok, the ajax call must have worked because I see this string.");
}