2010-12-03 51 views
5

Je développe un site Web dans ASP.NET MVC 2. À un certain moment, je reçois un ActionResult dans un contrôleur et j'appelle évidemment la méthodeComment retourner View avec QueryString dans ASP.NET MVC 2?

return View(); 

Est-il possible que je pouvais passer QueryString dans ma vue ou joindre des paramètres à l'URL?

Répondre

3

Vous pouvez

public ActionResult Index() 
{ 
    RouteValueDictionary rvd = new RouteValueDictionary(); 
    rvd.Add("ParamID", "123"); 
    return RedirectToAction("Index", "ControllerName",rvd); 
} 

Ne pas oublier d'inclure cette

using System.Web.Routing; 

ou simplement vous pouvez essayer cette

return RedirectToAction("Index?ParamID=1234"); 
+0

mais alors je ne peux pas aussi passer un modèle ... – user3281466

+1

Appelez-moi fou, mais cela ressemble à une boucle infinie. – RayLoveless

+0

avez-vous trouvé une solution à votre problème. J'essaie de faire la même chose. Quand je renvoie view (model), il supprime le paramètre url. – Nakres

8

Une vue est censé manipuler le modèle qui est passé par le contrôleur. Les paramètres de chaîne de requête sont déjà présents lorsque la demande a été faite à l'action correspondante. Donc, pour passer un modèle de vue:

var model = new MyViewModel 
{ 
    SomeParam = "Some value" 
} 
return View(model); 

Et maintenant, à votre avis, vous pouvez utiliser ce modèle.

Si d'autre part vous ne voulez pas retourner une vue mais rediriger vers une autre action du contrôleur, vous pouvez:

return RedirectToAction("SomeOtherActionName", new { ParamName = "ParamValue" }); 
+4

comment puis-je également passer un modèle, ainsi qu'une chaîne de requête? – user3281466

0

Pour moi, je perdais la chaîne de requête sur un formulaire POST. Request.QueryString était vide dans l'action de la commande du contrôleur. Donc, ce que j'ai fait était d'inclure la chaîne de requête dans l'action du formulaire.

Il y a plusieurs façons de le faire. Les réponses sont listées ici:

Using Html.BeginForm with querystring

Désolé pour le lien seule réponse, mais je ne veux pas dupliquer le travail de ces réponses ici. En outre j'espère qu'il est utile à quelqu'un de réaliser que vous pourriez perdre la chaîne de requête par un poste de formulaire.