2008-10-29 4 views

Répondre

1

Cela ressemble à ce que vous voulez faire est d'appeler le contrôleur Livres, avec, par exemple, l'action de recherche. Ainsi, par exemple, vous pouvez appeler/Livres/Recherche/< recherche expression >/1 ou/Livres/Recherche/< expression de recherche >/2, etc. (Il y a quelques façons différentes, vous pourriez formatez ces URL, mais il est la plupart du temps une question de préférence personnelle, je pense) Si vous voulez que les URL apparaissent comme vous les avez ci-dessus (sans l'action dans l'URL), qui peut être accompli avec le routage, quelque chose comme ceci:

routes.MapRoute(
    "Books", 
    "Books/{searchExpr}/{pageId}", 
    new { controller = "Books", action = "Search", searchExpr = "", pageId = 1 } 
); 

Je pense que le problème principal est que vous essayez d'utiliser le paradigme WebForms PostBack tout dans une situation où il est probablement préférable d'envoyer les informations au serveur dans l'URL ou la chaîne de requête. Le seul moment où vous êtes en train de passer à l'affichage des données de formulaire ici est lorsque l'utilisateur type en fait quelque chose dans la zone de recherche et clique sur le bouton de recherche - à ce moment-là, le contrôleur passera l'expression de recherche à la vue appropriée par la farce dans ViewData, et à partir de là, la vue peut le retirer et repeupler cette zone de texte sur la page de résultats.

+0

remercie tout le monde pour leurs commentaires. J'ai réalisé la nuit dernière et en naviguant autour de StackoverFlow en utilisant les Urls différemment est le chemin à parcourir. Je vais prendre un peu de temps pour ne pas penser à la forme du web! Attendez-vous à plus de questions bientôt! :) –

1

Vues MVC peuvent avoir plusieurs formes sur une « page », donc il suffit de créer des sections distinctes et donner à chacun leur propre forme d'action.

<form id="form1" name="form1" action="/Books/1" method="get"> 
<!--...form fields--> 
</form> 


<form id="form2" name="form2" action="/Books/2" method="get"> 
<!--...form fields--> 
</form> 
0

Je n'ai jamais vu la possibilité d'avoir un champ de formulaire attaché à deux formes, semble que cela ne fonctionnerait pas. Ce que vous pouvez faire est de mettre un champ caché dans le second formulaire qui, lors de la soumission, saisit les informations de la zone de texte dans le premier formulaire.

3
<form id="form1" name="form1" action="/Books/" method="get"> 
<input type="text" name="search" value=""> 
<input type="submit" name="id" value="1"> 
<input type="submit" name="id" value="2"> 
</form> 
Questions connexes