MVC – форма Ajax – возвращаемое частичное представление не обновляется в цели <div>

StackOverflow https://stackoverflow.com/questions/1077316

Вопрос

У меня есть индексное представление, которое я хочу обновлять автоматически, когда пользователь вводит идентификатор клиента.У меня что-то похожее работало (только обновлялось просто ярлык) - но это не сработает.

Что происходит, так это то, что частичный фрагмент просто отображается сам по себе (а не вместо 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.");
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top