ASP.NET MVC Redirection avec le modèle
J'ai actuellement une méthode dans mon contrôleur qui accepte une forme de collecte, enregistre les données, puis affiche les données dans une page 'Détails'. À l'heure actuelle, le code ressemble à quelque chose comme:
[HttpPost]
public ActionResult Create(PersonModel person)<br>
{
if (person.IsValid())
{
person.additionalData = "Person created successfully";
return View("Details", person);
}
}
Le problème est que le retour de l'affichage des Détails de cette manière conserve l'URL monsite/Personne/Créer - idéalement, j'aimerais que l'URL monsite/Personne/Détails/IdGoesHere.
Je suis sûr que cela doit être possible. Évidemment, je pourrais utiliser la Réponse.Rediriger, mais ce n'est pas me permettre de passer le modèle de la vue. Aussi loin que je peux dire, je ne peux pas passer le modèle à l'aide de RedirectToAction?
Merci pour l'aide.
EDIT: À confirmer - le modèle produit par l'action de création est différent de celui par défaut créé par les Détails de l'action. Donc, faire une quinte de redirection à l'Action et en passant l'Id ne fonctionne pas comme le modèle produit n'est pas correct. Pour donner plus de contexte, le modèle de l'action Create contient une valeur supplémentaire en disant: "Personne créée avec succès', si je me rediriger vers les Détails de l'action, ce message n'est pas présent dans le modèle.
Vous devez vous connecter pour publier un commentaire.
Directement à partir de ma propre application:
alors, n'était pas à votre "Détails" de l'action sera comme ceci:
ne pourrait-on pas adopter une approche similaire??
Vous pourriez faire la redirection comme par convention et qui ont un drapeau (sur tempdata comme ci-dessus), qui donne à ce message? Le tempadata drapeau ne serait défini à l'intérieur de l'action de création, par conséquent, ne voulut jamais se produire sur la Création d'une nouvelle "personne" de l'objet. ainsi, les Détails de l'action ne voulut jamais le montrer comme une conséquence de l'action de création
PersonModel
objet dans tempdata et de le récupérer à partir de tempdata dans votreDetails
méthode d'action.Ce qui devrait vous prendre pour les Détails du Modèle, en passant l'ID avec elle.
Il serait possible de compléter ce qui a été offert (utiliser
RedirectToAction
et de routage) avec l'utilisation deTempData
- Je l'utiliser pour des articles que je ne le voulons pas créer de nouveau sur les demandes ultérieures ou persistent encore dans la base de données. Avec cela, je n'ai pas besoin null vérifie de mon point de vue, comme le Confirment la page ne peut être que "eu" si il y a des données pour cela.
Esprit vous pouvez également prendre le type de l'approche sécuritaire de MvcContrib et ne