2010-03-23 5 views
1

J'ai une page. (action) et un contrôleur appelé Widget. Im passant dans le client comme une chaîne.asp.net mvc passer une variable à une autre méthode d'action avec un poste de formulaire

Je souhaite pouvoir transférer le client d'une page à l'autre, ainsi que les autres champs affichés.

qu'est-ce que je fais mal ci-dessous? client arrive comme nulle

par exemple: Widet/Page2/clientABC

 public ActionResult Page2(string client) 
     { 

      return View(); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Page2(string client, string sector) 
     { 
      return RedirectToAction("Page3", new { client = client, sector = sector }); 
     } 

     public ActionResult Page3(string client, string sector) 
     { 
      return View(); 
     } 
+0

client est nulle où? – codenheim

+0

lorsque page3 charge – raklos

+0

et dans la page2 après – raklos

Répondre

0

ce travail?

Widet/Page2?client=clientABC&sector=123 

Puisque vous avez une action avec plusieurs paramètres, je pense que vous devez les nommer dans la chaîne de requête. C'est comme ça que je l'ai fait. À moins que l'action n'ait un seul paramètre, le routage par défaut ne gère pas la façon dont vous essayez de l'appeler.

Regardez dans votre fichier Global.asax.cs pour voir la config de routage.

Si elle ressemble à ceci:

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Root", 
      "", 
      new { controller = "Home", action = "Index", id = "" } 
     ); 
    } 

Vous pouvez jouer avec lui et de le rendre en charge plusieurs params comme:

{controller}/{action}/{param1}/{param2} 

Bien que je voudrais simplement utiliser les paramètres nommés dans la chaîne de requête.

+0

non, j'ai essayé cela. – raklos

+0

Supprimer [AcceptVerbs] ou ajouter HttpVerbs.Get et cela devrait fonctionner. Fonctionne pour moi: http: // localhost/Document/Page2? Client = abc & secteur = 123 – codenheim

+0

cela a fonctionné en changeant l'itinéraire pour correspondre à la mienne: {controller}/{action}/{param1}/{param2} – raklos

0

Si je comprends bien, votre problème est que vous ne publiez pas le client dans votre action "Page2". Vous pouvez l'afficher en tant que paramètre de publication (dans un champ masqué par exemple) ou dans l'URL (dans l'action de votre balise de formulaire). Je suppose que vous le voulez dans votre URL.

Si vous utilisez le formulaire aide html, vous pouvez l'utiliser comme ceci:

<%using(Html.BeginForm("Page2", "Home", new { client = "clientABC" })) { } %> 
Questions connexes