2009-07-17 5 views
0

Ich versuche Creat-Liste für Detailansicht. dann setzen Sie ein Such-Textfeld oben auf der Liste. Hoffe, das Suchergebnis wird die Liste teilweise ersetzen.Suchergebnis für die Suche nach AJAX-Formular nicht erhalten

Mein Steuercode wie:

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 Code wie:

<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> 

Wenn ich das Ajax-Formular abgesendet hat, hat es die richtigen Maßnahmen Searcn erreichen und ich habe das richtige Ergebnis erhält aus Repository, aber die Liste in der Ansicht wurde nicht durch das neue Ergebnis ersetzt.

Wenn ich Aktion suchen ändern wie:

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

Die Liste wil durch den Test-String ersetzen werden. Wie behebt man dieses Problem?

Antwort

0

Sie MyList heraus in eine Teilansicht ziehen kann, MyPartialList.ascx

Ihre Suche Action sollte dann diese Teilansicht zurückkehren, so etwas wie dieses:

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

In der Indexansicht, machen die erste Liste wie dies:

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

Ihre Teil würde MyPartialList.ascx wie folgt aussehen:

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