无法获取搜索ajax表单的搜索结果

时间:2009-07-17 15:39:27

标签: asp.net-mvc

我尝试为详细视图创建列表。然后在列表顶部放置一个搜索文本框。希望搜索结果将部分替换列表。

我的控制代码如:

public ActionResult Index(int? page)
{
  Repository repository = new Repository();
  var listitems= repository.FindAllItems();
  return View(registry_page);
}

public ActionResult Search(string keyword)
{
  try
    {
     Repository repository = new Repository();     
     var listitems = repository.FindItemsByKeyWord(keyword);           
     return View("Index", registries);
    }
  catch
  {
    return View("Index");
   }
}

我的观看代码如:

<script src="<%= Url.Content("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script>
<script src="<%= Url.Content("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript"></script>

<% using (Ajax.BeginForm("Search", new AjaxOptions { UpdateTargetId = "MyList" }))
   { %>
<p>
    Search:
    <input id="keyword" name="keyword" type="text" />
    <input type="submit" value="Go" />
</p>
<% } %>

<div id="MyList">
 <table idth="780px">
    ...

    <% foreach (var item in Model)
      { %>
      <tr>
      ...
      </tr>
    <% } %>
 </table>
</div>

当我提交ajax表单时,它确实达到了正确的操作Searcn,我确实从存储库中获得了正确的结果,但是视图中的列表没有被新结果替换。

如果我更改搜索操作,请执行以下操作:

public ActionResult Search(string keyword)
{
 string teststring = "<div>This is a test string to replace the list</div>";
 return Content(teststring);
}

该列表将被测试字符串替换。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以将MyList拉出到部分视图MyPartialList.ascx

您的搜索actionresult应返回此部分视图,如下所示:

public ActionResult Search(string keyword)
{
     Repository repository = new Repository();     
     var listitems = repository.FindItemsByKeyWord(keyword);           
     return PartialView("MyPartialList", listitems);
}

在索引视图中,渲染初始列表如下:

<div id="MyList">
  <% Html.RenderPartial("MyPartialList",Model); %>
</div>

您的部分,MyPartialList.ascx将如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Item>>" %>
<table ..>
<% foreach(var item in Model){%>
  // print it out
<%}%>
</table>