Le passage d'un objet de classe à partir d'une action de contrôleur de contrôleur de l'action en ASP.net MVC 4
Je veux passer un objet de classe à partir d'une action de contrôleur de contrôleur de l'action.
Expéditeur Action
public class CourseController : Controller
{
[HttpPost]
public ActionResult CreateNewCourse(CourseViewModelBase courseViewModel)
{
if (ModelState.IsValid)
{
//Do some stuff
return RedirectToAction("CreateNewProject", "Project",
new { courseVM = courseViewModel});
}
//Bad happened
return View("CreateNewCourse", courseViewModel);
}
Récepteur Action
public class ProjectController : Controller
{
[HttpGet]
public ActionResult CreateNewProject(CourseViewModelBase courseVM)
{
//Use CourseVM data and do other stuff
return View("Create", projectCreateViewModel);
}
}
Je reçois correctement les données dans Expéditeur Action et Récepteur Action est appelé correctement à partir de la rediriger vers l'action. Cependant courseVM dans Récepteur Action est null.
Je sais que c'est une très vieille question et avait été demandé de façon répétée. Mais j'ai trouvé que la plupart des réponses ont proposé d'utiliser TempData
et ont répondu en 2008-2009. Je crois qu'il y aurait d'une certaine manière pour transmettre des données à l'aide de RedirectToAction without using TempData
. Si il n'y est pas alors je voudrais aller avec TempData seulement.
Trouver
Si je passe quelques données simples par exemple new {id = courseViewModel.CourseDuration}
et changer l'argument Récepteur d'action pour id, id est correctement reçu.
Des Questions Similaires
Question 1
Question 2
Question 3
Question 4
Question 5
Question 6, a essayé de l'utiliser mais n'a pas d'entraînement
Question 7
Question 8
Question 9
Question 10
La plupart des réponses dans les questions ci-dessus sont datés de retour en 2008/09 et utilise tempdata.
OriginalL'auteur Rohit | 2013-07-12
Vous devez vous connecter pour publier un commentaire.
utiliser cette
dans votre cas
Vous pouvez également utiliser
Rohit: je pense que "RedirectToAction" est la meilleure approche pour aller. Merci
Hey Pawanism j'ai de la difficulté à l'envoi de cours VM (à l'.cshtml) au contrôleur. Il est toujours aussi nul
comment vous appelez à l'action de la vue ou côté client. Son appel ajax ou à l'aide de BeginForm en Vue. vérifiez que tous les arguments sont de passage correctement.
Cela ne fonctionne que pour le passage des types de données primitifs étant donné que les données sont transmises via les paramètres querystring. Les objets complexes sont toujours la valeur null au lieu de destination.
OriginalL'auteur Chandu
Cette question elle-même est maintenant environ un an, mais je suis venu à travers elle, j'ai donc pensé que je pourrais aider d'autres personnes qui viennent à travers elle dans le futur. La accepté de répondre ne fonctionne pas - l'objet complexe arrive encore à la réception d'action nulle.
J'ai trouvé que cette réponse à partir de 2012 est toujours valide. Vous venez de ne peut pas passer des objets complexes dans un HttpGet demande (par nature, c'est ce qu'un RedirectToAction est - encore une fois, pas quelque chose que vous pouvez modifier). Vous pouvez seulement de transmettre des valeurs scalaires: int, string, etc.
Assurez-vous d'avoir écarté la ci-dessous deux options:
return View("ReceivingViewName", viewmodel)
Encore une fois, ne fonctionne que pour certaines situations, plus que probablement, vous aurez besoin de l'autre action, et donc aura besoin de la Redirection, mais vaut la peine de rappeler qu'une possibilité.Si vous ne pouvez pas contourner le problème, et ont éliminé les deux options ci-dessus, vos options sont:
OriginalL'auteur EF0