문제

사용자가 클라이언트 ID를 입력할 때 자동으로 업데이트하려는 인덱스 뷰가 있습니다.작동하는 것과 비슷한 것이 있지만(레이블만 업데이트하는 것뿐임) 작동하지 않습니다.

일어나는 일은 부분이 (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'). oldow ();});});

  <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