7
votes

Modèle de passage d'une action à une autre action dans le même contrôleur

J'essaie de passer mon modèle LIST DITESTLIST d'une action à une autre, mais je reçois une valeur nulle dans le 2e contrôleur. S'il vous plaît suggérer ce qui ne va pas ici. Même essayé avec: xxx

aide s'il vous plaît. xxx


2 commentaires

Pourquoi ne pas retourner rétrocifirextemplate (énoncé); plutôt? Vous devriez probablement déplacer la fonctionnalité commune dans une autre méthode.


@amit_g est correct. Juste "Retour Eritemplate (Déclaration);" C'est aussi une actionResulte afin que cela fonctionnera comme souhaité.


4 Réponses :


1
votes

redirectToaction () écrit une commande redirection sur le navigateur, ce qui crée une nouvelle demande à Writeintemplate () . Votre objet modèle est donc perdu.

est écritureTemplate () une action indépendante qui sera parfois responsable d'une demande entière d'un utilisateur ou d'une demande partielle à partir d'une vue? Sinon, vous devez simplement l'appeler comme une méthode régulière au lieu d'utiliser redirectToaction () .


0 commentaires

1
votes

C'est parce que vous aviez des paramètres de route erronés Spépéfiés.

En pensant à cela. Avez-vous vérifié que les données ne sont pas nulles? p>

Vous utilisez p>

return RedirectToAction("WriteInTemplate","controllerName", new{"statementList"=stetementList});


1 commentaires

Il a dit qu'il était dans le même contrôleur, donc ce qu'il aurait travaillé et utilise des paramètres corrects.



3
votes

Veuillez jeter un coup d'œil ici pour réussir votre modèle

Vous n'essayez pas "DéclaréList", à la place, vous passez de nouveau {relevélist = relevélist} simplement transmettre le modèle et vous devriez être bien. P>

return RedirectToAction("WriteInTemplate", statementList);


0 commentaires

1
votes

La façon dont vous appelez la méthode RedirectToaction () n'est peut-être pas votre problème.

Pour moi, les solutions présentées ci-dessus n'ont pas fonctionné car la méthode RedirectToaction () construit une valeur routée à l'aide de la valeur .Tostring () propriété dans le modèle. Cela ne fonctionnera que si toutes les propriétés du modèle sont des propriétés simples et échoue si des propriétés sont des objets complexes, des listes, des collections, etc. Parce que cette méthode n'utilise pas de récursivité.

si par exemple, un modèle appelé MyModelorganisation contenait des employés de la liste de propriétés, alors cette propriété entraînerait une valeur de chaîne de requête de .... & Employés = System.Collections.Generic.List'1 [System.string] et la liaison échouerait, et vous finiriez par ... NULL

J'ai eu ce problème, j'ai donc créé une copie de mon modèle contenant uniquement les éléments du formulaire, décapage Mes listes et ont passé cela à l'intérieur de RedirectToaction (). Une fois sur l'autre méthode d'action, j'ai pu réassembler mes listes et les ajouter à mon modèle avant d'appeler le dernier retour. Bonne chance. Voici l'idée dans mon code: xxx


0 commentaires