0

我有一个索引视图,我想在用户输入客户端 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').submit(); }); });

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

  </div>
4

2 回答 2

1

我有同样的问题。

在我的部分观点中,我有这个

<%@ 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.");
}
于 2010-04-02T17:08:14.700 回答
0

与其不断地在页面上发布表单,为什么不在幕后调用 jQuery.get 来获取所提供文本的搜索结果。我认为这会更快更干净。当像我认为的那样提交表单时(从我对您代码的阅读来看),您会导致页面基本上刷新(而不是重新写入 div)。

$('#sForm').submit()
于 2009-07-03T01:07:54.183 回答