2009-08-18 6 views
1

Mon contrôleur dispose de 2 actions:Puis-je partager une vue dans asp.net mvc?

  • Résultats()
  • Index()

Je veux partager la vue nommée index.aspx entre ces 2 actions.

Voir my previous post pour plus d'informations

Lorsque je construis mon lien vers la page, je suppose que je ne peux pas l'envoyer à l'action Index qu'elle attend un type FormCollection et donc je crée une action Résultats

public ActionResult Results(ClientSearch data, int? page) 
    { 
     FormCollection collection = new FormCollection(); 
     collection.Add("FNAme", data.FName); 
     collection.Add("Lane", data.Lane); 
     collection.Add("Zip", data.Zip); 
     collection.Add("Phone", data.Phone); 


     return Index(page, collection); 
    } 

Répondre

3

Bien sûr que vous pouvez. C'est au contrôleur de décider comment réagir et quelle vue servir.

Maintenant que j'ai lu votre question à la fin :)), bien, vous pouvez vous en sortir avec deux actions du même nom. L'un acceptera les commandes GET (chargement initial de la page), l'autre servira les requêtes POST, effectuera l'action nécessaire et redirigera vers la même vue.

public MyController 
{ 
    [AcceptVerbs (HttpVerbs.Get)] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [AcceptVerbs (HttpVerbs.Post)] 
    public ActionResult Index (ClientSearch data, int? page) 
    { 
     // Process form post 

     return RedirectToAction ("Index"); 
    } 
} 
4

Pas sûr que je comprends parfaitement votre question, mais si vous voulez utiliser le même point de vue sur les différents ActionResults, vous pouvez:

public ActionResult One() { 
    // do stuff 
    return View("Index", myModel); 
} 


public ActionResult Two() { 
    // do stuff 
    return View("Index", myOtherModel); // Same View 
} 

Assurez-vous que vous fournissez le même Type pour la vue (si la vue a besoin d'un type).

Questions connexes