2017-03-23 1 views
0

Ich habe eine einfache Website erstellt, wo der Benutzer einige Dinge mit id suchen kann (gibt immer nur 1 Ergebnis zurück) und ich möchte diese Sucheingabe als ID zur URL hinzufügen. So können Sie die URL für dieses spezifische Suchergebnis freigeben.Asp.Net MVC 4 Suchzeichenfolge als ID-Parameter hinzufügen

Es wäre so etwas wie

Mysite/ProductSearch/12345 

aussehen, weiß ich nicht, wie die ID an die URL-Parameter zu übergeben und die Suche nach dieser ID auf Linkeintrag laufen.

Ich würde mich über alle Tipps und Referenzen freuen.

Controller (ProductStateLookup):

[HttpPost] 
public ActionResult Index(string Search) 
{ 
    // some code to query the db and return me model with data 
    return View(model); 
} 

Ausblick:

<div id="ProductSearch"> 
    <form action="ProductStateLookup/Index" method="POST"> 
     <input type="text" name="Search" placeholder="Enter Product ID"> 
     <input type="submit" value="Check P"> 
    </form> 
</div> 
+0

Wie über die Rückkehr Suchergebnisse generieren würde? Wenn alle Ergebnisse auf derselben Seite angezeigt werden, verwenden Sie 'jQuery.ajax', um den Suchparameter an die 'ProductSearch'-Methode zu übergeben und die Teilansicht zum Anzeigen der Ergebnisse zu verwenden (möglicherweise auch mit Paginierung, es gibt viele Artikel, die dies erklären). –

Antwort

1

Sie müssen die Methode ein [HttpGet] und ändern Sie die <form>-method="GET" machen.

public ActionResult Index(string Search) 

Ansicht

@using (Html.BeginForm("Index", "ProductStateLookup", FormMethod.Get)) 
{ 
    <input type="text" name="Search" placeholder="Enter Product ID"> 
    <input type="submit" value="Check P"> 
} 

Beachten Sie, dass dies eine Abfrage-String an die URL hinzufügen wird (dh ../ProductStateLookup/Index?search=1234), es sei denn, Sie entweder eine benutzerdefinierte Routendefinition hinzufügen oder die Parameter ändern und das Textfeld name Attribut id. Eine benutzerdefinierte Routendefinition müsste etwas sein, wie

routes.MapRoute(
    name: "Search", 
    url: "ProductStateLookup/{search}", 
    defaults: new { controller = "ProductStateLookup", action = "Index", id = UrlParameter.Optional } 
); 

die .../ProductStateLookup/1234