2009-07-17 195 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>