Не удается получить результат поиска для поиска формы AJAX - PullRequest
0 голосов
/ 17 июля 2009

Я пытаюсь создать список для подробного просмотра. затем поместите текстовое поле поиска в верхней части списка. Надеюсь, что результат поиска заменит список частично.

Мой контрольный код вроде:

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");
   }
}

My View код типа:

<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 голосов
/ 18 июля 2009

Вы можете вытащить MyList в частичное представление, MyPartialList.ascx

Ваш поисковый результат действия должен затем вернуть это частичное представление, примерно так:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...