Retour à l'url courante en asp.net mvc
J'ai une méthode:
public ActionResult AddProductToCart(int productId)
{
var product = _productService.GetProductById(productId);
if (product == null)
return RedirectToAction("Index", "Home");
int productVariantId = 0;
if (_shoppingCartService.DirectAddToCartAllowed(productId, out productVariantId))
{
var productVariant = _productService.GetProductVariantById(productVariantId);
var addToCartWarnings = _shoppingCartService.AddToCart(_workContext.CurrentCustomer,
productVariant, ShoppingCartType.ShoppingCart,
string.Empty, decimal.Zero, 1, true);
if (addToCartWarnings.Count == 0)
//return RedirectToRoute("ShoppingCart");
else
return RedirectToRoute("Product", new { productId = product.Id, SeName = product.GetSeName() });
}
else
return RedirectToRoute("Product", new { productId = product.Id, SeName = product.GetSeName() });
}
Vous voyez la ligne qui est commenté: je veux y déclenche pas de redirection, mais juste rester sur la même page à partir de laquelle cette demande a été faite.
Si j'ai mis return View()
c'est pas bien parce qu'il recherche la Vue de ce nom, bien que cette méthode est une action simple pour ajouter au panier..
Pouvez-vous svp me donner une solution de façon à Rediriger vers l'url actuelle ou à rester sur la même page?
OriginalL'auteur Cristian Boariu | 2012-02-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer supplémentaires
returnUrl
paramètre de chaîne de requête à cette méthode en indiquant l'url de revenir à une fois que le produit a bien été ajouté au panier:de sorte que vous pouvez rediriger retour à l'endroit où vous étiez:
et lors de la génération du lien de cette action:
ou si vous envoyez des messages à cette action (qui, par la façon dont vous devriez probablement être parce que c'est la modification de l'état sur le serveur, il ajoute un produit à un panier ou quelque chose):
Une autre possibilité est d'utiliser AJAX pour appeler cette méthode. De cette façon, l'utilisateur restera sur la page où il était avant de l'appeler.
returnUrl
et par défaut àRequest.Referrer
. Presque plus à l'épreuve des balles approche consiste à créer un HtmlExtender (peut-êtreHtml.ActionLinkWithReturnUrl(...)
?)personnellement je n'utilise pas
Referrer
. Je ne sais pas pourquoi. Il suffit de ne pas comme ça.Quelque chose où vous vous fiez sur des choses dans un environnement sans état me donne les zizis trop; donc, je suis avec vous.
Je ne sais pas pourquoi, je suis paranoïaque qu'il doit y avoir une version de IE ou de quelque chose qui, dans une situation particulière de ne pas envoyer cet en-tête HTTP de la demande et il va le buste de mon site alors qu'avec un paramètre de chaîne de requête je me sens plus en sécurité. Allez blâmer c'est à dire, pas à moi. Il a mordu moi, tellement de fois, que je préfère prendre des précautions. Je n'ai strictement aucune preuve scientifique, juste ma paranoïa sur IE. Mais peut-être tout cela n'est pas nécessaire et le Référent de l'en-tête fonctionne très bien.
lol, pistolet timide un peu, envie d'en parler? ;p
OriginalL'auteur Darin Dimitrov
En supposant que vous dire de retourner là où vous avez été avant de visiter ce contrôleur:
Gardez à l'esprit que si vous avez Posté pour arriver à ce [précédente] page, vous allez être à une perte, puisque vous n'êtes pas en imitant la même demande.
OriginalL'auteur Brad Christie