2010-08-12 6 views
2

J'ai un formulaire simple basé sur un modèle appelé Visiteur. J'aimerais avoir un bouton de recherche dans l'un des champs de texte de l'ID afin que l'utilisateur puisse cliquer sur le bouton et que la page contienne des informations sur les visiteurs: prénom, nom, etc. Dans Web Forms, je ferais quelque chose comme ceci:ASP.NET MVC One Form, deux boutons

page_load(){ 
    person = businessManager.FindPersonById(Convert.ToInt32(txtId.Text)); 
    txtFirstName.Text = person.FirstName; 
    txtLastName.Text = person.LastName; 
    ... 
} 

Avant le bouton de recherche, mon formulaire d'affichage appelé SignIn fonctionnait très bien; affiché les données au contrôleur et a fait sa chose:

[HttpPost] 
    public ActionResult SignIn(Visitor visitor) { 
     if (ModelState.IsValid) { 
      visitorRepoistory.Add(visitor); 
      visitorRepoistory.Save(); 
      return RedirectToAction("/"); 
     } else { 
      return View(new VisitorFormViewModel(visitor)); 
     } 
    } 

Mais maintenant que je suis un bouton de recherche placé sur mon formulaire de vue, je suis tout à fait perdu. Je ne sais pas comment câbler le bouton de recherche au contrôleur afin que je puisse: 1.) Rechercher les données et 2.) le renvoyer au formulaire de connexion pour peupler les champs. Quelles sont les étapes que je dois prendre pour accomplir ceci?

Merci.

+0

Jetez un oeil ici: http://stackoverflow.com/questions/2444245/handling -2-buttons-submit-actions-dans-une-seule-vue-forme-asp-net-mvc-2-rtm –

+0

Le problème est, je dois retourner à t Il a la même page et remplit les champs avec les résultats de la recherche. Je pense que c'est là que je suis confus. – Mike

+0

Faites la recherche et retournez à la vue en lui passant votre résultat. –

Répondre

2

Cette question a été à plusieurs reprises en double sur le SO

Multiple forms in ASP.NET MVC

Mais pour répondre à votre question, vous pouvez avoir plusieurs formes sur une page et ont différentes actions gérer les soumet. C'est ce que le lien ci-dessus décrit.

spécifique à votre cas:

Voir

<% Html.BeginForm("Search", "<ControllerName>"); %> 
    Your search controls here 
<% Html.EndForm(); %> 

<% Html.BeginForm("SignIn", "<ControllerName>"); %> 
    Your signin controls here 
<% Html.EndForm(); %> 

Contrôleur

[HttpPost] 
public ActionResult Search(FormCollection collection) 
{ 
    Do your search and return a view 
} 

[HttpPost] 
public ActionResult SignIn(Visitor visitor) 
{ 
    if (ModelState.IsValid) { 
     visitorRepoistory.Add(visitor); 
     visitorRepoistory.Save(); 
     return RedirectToAction("/"); 
    } else { 
     return View(new VisitorFormViewModel(visitor)); 
    } 
} 
+0

Ceci est une forme unique. La recherche est juste un moyen de rechercher les informations sur les visiteurs et de remplir les champs dans le même formulaire. – Mike

+0

À droite, mais vous avez ajouté un nouveau bouton qui permet de soumettre, puisque vous ne pouvez pas soumettre plusieurs actions sur un même formulaire, vous devez avoir un formulaire pour chaque action (par exemple, la fonctionnalité Recherche et connexion) que vous souhaitez. –

+0

Vous pouvez soumettre plusieurs actions dans un seul formulaire. Vois ma réponse. –