2010-10-22 4 views
0

J'ai une zone de saisie dans laquelle la valeur entrée sera POSTée sur le paramètre Action. Mais je veux aussi la valeur à réfléchir sur l'URL comme ceci:Comment passer la valeur du champ de saisie dans l'objet route?

www.my-site.com/search/myquery

Toute idée sur la façon de ce achive?

Voici les codes ..

Formulaire de recherche

 


     <% using(Html.BeginForm("Index", "Search")) { %> 

      <%: Html.TextBox("query", "Enter Keyword") %> 

     <% } %> 
 

mondial Asax

 

routes.Add("Search", new Route(
       "Search/{query}", 
       new { controller = "Search", action ="Index", query="" } 
      )); 

 

Contrôleur

 


public ActionResult Index(string query) 
     { 
return new EmptyResult() 
    } 

 

Répondre

1

Si vous voulez passer la valeur saisie par la utilisateur dans la chaîne de requête, vous devez utiliser javascript. Inscrivez-vous à l'événement submit du formulaire et ajoutez-le à l'URL. Une autre possibilité est d'utiliser le verbe GET au lieu de POST qui l'ajoutera automatiquement à la chaîne de requête (mais dans ce cas vous devriez utiliser un nom d'action différent car vous ne pouvez pas avoir deux actions avec le même nom et le même verbe).

<% using (Html.BeginForm("Index", "Search", FormMethod.Get)) { %> 
    <%: Html.TextBox("query", "Enter Keyword") %> 
    <input type="submit" value="OK" /> 
<% } %> 
Questions connexes