Objet de passage dans RedirectToAction
Je veux faire passer l'objet dans RedirectToAction. C'est mon code:
RouteValueDictionary dict = new RouteValueDictionary();
dict.Add("searchJob", searchJob);
return RedirectToAction("SearchJob", "SearchJob", dict);
où searchJob est instance de SearchJob. Mais je n'ai pas de données sur SearchJob méthode d'action. Au lieu de cela je obtenir querystring de searchJob = Entité.SearchJob. S'il vous plaît aider moi. Ce que je fais mal?
- Avez-vous regardé les docs pour
RedirectToAction
? - Quel est le contrôleur qui a SearchJob action? Est-il le même contrôleur?
- Pas de SearchJob est le contrôleur et il a une action nommée SearchJob.
- Je n'ai pas regardé les docs. Mais j'ai trouvé réponse à ma question. J'ai stocké dans TempData. Sorte de petit hack je le sens, mais il fonctionne. Merci de toute façon pour le vote négatif 🙂
- +1 parce que je déteste quand quelqu'un voix quelqu'un est en panne et n'est pas propre à elle.
- double possible de RedirectToAction(..) avec complexe profonde objet échoue
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas passer des classes de l'redirigé actions comme ça. La Redirection se fait par l'intermédiaire de l'URL. L'Url est une chaîne, donc il ne peut pas contenir des classes (la sérialisation des objets à l'url, c'est pas vraiment de logique ici)
Au lieu de cela, vous pouvez utiliser
TempData
et dans l'Action redirigé
Après l'exécution du code ci-dessus, TempData ne contiennent pas de searchJob plus. TempData est généralement utilisé pour la lecture de temps.
Mais je n'aime pas la façon ci-dessus. Si j'étais à votre place, et je voulais de recherche emplois par nom, je voudrais ajouter les paramètres de la route comme
et de le recevoir à l'action via le paramètre
De cette façon, vous obtenez la meilleure de l'utilisateur et HTTP URL amicale et de l'Action du point de vue, il serait d'obtenir tous les paramètres dont il a besoin à partir de l'extérieur. C'est mieux pour les tests, la maintenance, etc.
Vous pourriez essayer:
Passage de la
searchJob
objet dans leRouteValueDictionary
constructeur de décomposer lesearchJob
objet et passer chaque propriété de laSearchJob
classe comme un haut-niveau de la route de la valeur.Avec le modèle de classeur par défaut, une action définie comme:
Recevrez un complètement ré-hydraté
SearchJob
objet.Vous ne pouvez pas passer des classes de RedirectToAction méthode, si vous souhaitez passer la totalité d'un objet dans une chaîne de requête ou par la POSTE vous pouvez sérialiser l'objet à l'aide de XML ou JSON et désérialiser l'objet dans le récepteur de contrôleur.
Si vous utilisez cette approche pour être prudent sur la taille de l'objet sérialisé.
Essayez d'utiliser La Croix-L'Affichage De La Page vous pouvez déterminer Prevoiuse type de page, et utiliser l'objet.