Rediriger vers Action par paramètre mvc
Je veux rediriger vers une action dans un autre Contrôleur, mais il ne fonctionne pas
voici mon code dans ProductManagerController:
[HttpPost]
public ActionResult RedirectToImages(int id)
{
return RedirectToAction("Index","ProductImageManeger", new { id=id });
}
et c'est à mon ProductImageManagerController:
[HttpGet]
public ViewResult Index(int id)
{
return View("Index",_db.ProductImages.Where(rs=>rs.ProductId == id).ToList());
}
Qu'elle redirige vers ProductImageManager/Index sans paramètre très bien(pas d'erreur) mais avec le code ci-dessus, j'obtiens ceci:
Le dictionnaire de paramètres contient une valeur null pour
le paramètre 'ID' de type non nullable "Système".Int32 " pour la méthode
'Système.Web.Mvc.ViewResult Index(Int32) " dans
'...Les contrôleurs.ProductImageManagerController'.
Un paramètre facultatif doit être un type de référence, un type nullable, ou être
déclarées comme un paramètre facultatif. Nom du paramètre: paramètres
source d'informationauteur Mohammadreza
Vous devez vous connecter pour publier un commentaire.
Pour rediriger dans le même contrôleur que vous n'avez pas besoin de spécifier le contrôleur. Vous ne savez pas si vous avez besoin d'avoir le paramètre nullable à faire cette redirection ou si nous avons comme nullable parce qu'il nous faut dans un autre sens, mais c'est à partir d'un projet de travail:
MODIFIER
Appel à un autre contrôleur, vous pourriez avoir besoin d'utiliser un RouteValueDictionary:
L'exemple que vous avez fournie devrait fonctionner si votre RouteConfig est configuré pour cela, vous devez le vérifier, de sorte que vous avez mis en place correctement. Vérifier cette question stackoverflow et réponses pour plus d'informations.
EDIT 2:
Par le commentaire de @Mohammadreza, l'erreur était dans le RouteConfig.
Pour laisser l'application gérer les Url avec un id, vous devez vous assurer que la Voie est configurée pour elle. Vous faites cela dans la RouteConfig.cs situé dans le App_Start dossier.
Cela devrait fonctionner!
Remarquez que vous n'avez pas à passer le nom de la vue si vous êtes de retour le même point de vue que mis en œuvre par l'action.
Votre point de vue doit hériter de la modèle comme ceci:
Vous pouvez ensuite accéder à votre modèle dans la vue:
Essayer cela,
Ici, je mentionner que vous êtes passer plusieurs valeurs ou d'un modèle aussi.
C'est pourquoi ici je le mentionner.
Voici une défaillance de paramètres de commande, doit être une première action
ET
assurer votre table de routage est correcte