我尝试为详细视图创建列表。然后在列表顶部放置一个搜索文本框。希望搜索结果将部分替换列表。
我的控制代码如:
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);
}
该列表将被测试字符串替换。 如何解决这个问题?
答案 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>