2009-07-17 145 views
0

我尝试创建详细视图列表。然后将一个搜索文本框放在列表的顶部。希望搜索结果将部分替换列表。无法获得搜索ajax表单的搜索结果

我的控制代码,如:

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

你可以拉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>