MVC – форма Ajax – возвращаемое частичное представление не обновляется в цели <div>
-
21-08-2019 - |
Вопрос
У меня есть индексное представление, которое я хочу обновлять автоматически, когда пользователь вводит идентификатор клиента.У меня что-то похожее работало (только обновлялось просто ярлык) - но это не сработает.
Что происходит, так это то, что частичный фрагмент просто отображается сам по себе (а не вместо UpdateTargetID).Таким образом, данные отображаются на новой странице.Вот мой код:
Контроллер:
public ActionResult ClientList(string queryText)
{
var clients = CR.GetClientLike(queryText);
return PartialView("ClientIndex", clients);
}
Частичный просмотр:
<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>
Главный вид:
Код вставки перепутан, поэтому его просто скопировать/вставить:
$ (function () {$ ("#QueryText"). Keyup (function () {$ ('#sform'). Opper ();});});
<div id="status" class="status" name="status">
<%--<% Html.RenderPartial("ClientIndex", ViewData["clients"]); %> Should this be here???? --%>
</div>
Решение
Вместо того, чтобы постоянно публиковать форму на странице, почему бы не выполнить закулисный вызов jQuery.get, чтобы получить результаты поиска по предоставленному тексту.Я думаю, это будет быстрее и чище.Отправляя форму так, как я думаю (судя по тому, как я читал ваш код), вы заставляете страницу существенно обновляться (а не перезаписывать ее в div).
$('#sForm').submit()
Другие советы
У меня такая же проблема.
На мой взгляд, у меня было такое
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
но это должно было быть это
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IQueryable<Client>>" %>
простой способ проверить, работает ли ваш вызов ajax, — это вернуть строку вместо ActionResult
public string ClientList(string queryText)<
{
return("ok, the ajax call must have worked because I see this string.");
}