2009-06-25 8 views
3

Noch ein Neuling mit ASP.NET MVC! Alles, was ich zu tun beabsichtige, ist auf meiner Seite für eine Suche Textbox, wenn ich etwas eingeben und klicken Sie auf Suche, um die URL-Adresse folgende am Ende hat, wie in Stackoverflow, also hierWie Textbox Wert in Abfragezeichenfolge in asp.net übergeben mvc

/search?q=searchedtext 

umgeleitet werden sollte, ist, was ich jetzt habe,

<input id="searchText" maxlength="100" type="text" name="query" /> 
    <a href="???" class="searchButton">   
     Search   
    </a> 

ich habe eine Funktion in meinem Controller wie diese,

public ActionResult Search(string query) 
{ 

} 

Hier ist die Strecke ist,

routes.MapRoute(
      "Search",            
      "Search",       
      new { controller = "Posts", action = "Search"} 
     ); 

Kann jemand die Lücken hier ausfüllen :). Irgendwelche Kommentare geschätzt.

Antwort

2

Umhüllen Sie es mit Formular-Tag, setzen Sie seine Methode auf "GET", verwenden Sie Eingabe-Typ = 'submit' für das Senden von Formular (anstelle von 'a' Tag), Texteingabe als Abfrage (bereits erledigt), Abfrage als String in Parameter (bereits erledigt), Modell vom Controller zur Verarbeitung der Anfrage aufrufen, ViewData.Model aktualisieren, entsprechendes View-Ergebnis zurückgeben (teilweise, wenn AJAX verwendet wird).

Wenn Sie die Abfrage über die URL nicht über die Abfragezeichenfolge key/values ​​übergeben möchten, müssen Sie
dafür correct route angeben.

Ich denke, das wäre so etwas wie:

routes.MapRoute( 
      "Search", // Route name 
      "search/{query}", // URL with parameters 
      new 
       { controller = "search", action = "search"} // Parameter defaults 
     ); 
+0

Die Sache ist, dass es auf diese Weise funktioniert. Ich bekomme die Suchseite und die Ergebnisse darauf. Aber die URL sieht aus wie/suche. Ich möchte die Query-Zeichenfolge an sie übergeben, so dass die URL es hat. Ich könnte die href dieses achor-Tags mit jquery ändern, um den Textfeldwert zu füllen, aber das ist keine gute Lösung. – theraneman

+0

Wenn Sie das Formular verwenden und die Methode auf "GET" setzen, ändert sich die URL automatisch in ".../search? Q = ein Text". –

+1

Er hat Recht, es klingt wie Ihre Methode der Übertragung von Daten ist POST, wenn das, was Sie wirklich wollen, ist GET –

4

Sie brauchen, dass Client-Seite Code in einer Form zu wickeln:

<form action="/Search" method="get"> 
    <input id="q" name="q" maxlength="100" type="text" /> 
    <input type="submit" id="submit" value="Search" /> 
</form> 
0

hier ist das, was ich tat:

<% Html.BeginForm("Search", "controller name", FormMethod.Get); %> 
     <input id="criteria" name="criteria" maxlength="120" type="text" style="width:120px; " /> 
     <input type="image" alt="search" /> 
    <% Html.EndForm(); %> 

public ActionResult Search(string criteria) 
    { 
     //search code goes here 
    } 
Verwandte Themen