gpt4 book ai didi

asp.net-mvc-3 - 返回 asp.net mvc 中的当前 url

转载 作者:行者123 更新时间:2023-12-02 09:18:32 25 4
gpt4 key购买 nike

我有一个方法:

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() });
}

您会看到被注释掉的行:我希望不触发任何重定向,而只是停留在发出此请求的同一页面上

如果我输入return View(),那就不行了,因为它将搜索具有此名称的 View ,而此方法是添加到购物车的简单操作。

您能给我一个如何重定向到当前网址或保持在同一页面上的解决方案吗?

最佳答案

您可以向此方法传递一个额外的 returnUrl 查询字符串参数,指示将产品添加到购物车后返回的 URL:

public ActionResult AddProductToCart(int productId, string returnUrl)

这样您就可以重定向回您所在的位置:

if (addToCartWarnings.Count == 0)
{
// TODO: the usual checks that returnUrl belongs to your domain
// to avoid hackers spoofing your users with fake domains
if (!Url.IsLocalUrl(returnUrl))
{
// oops, someone tried to pwn your site => take respective actions
}
return Redirect(returnUrl);
}

生成此操作的链接时:

@Html.ActionLink(
"Add product 254 to the cart",
"AddProductToCart",
new { productId = 254, returnUrl = Request.RawUrl }
)

或者如果您正在发布此操作(顺便说一下,您可能应该这样做,因为它正在修改服务器上的状态 - 它将产品添加到购物车或其他东西中):

@using (Html.BeginForm("AddProductToCart", "Products"))
{
@Html.Hidden("returnurl", Request.RawUrl)
@Html.HiddenFor(x => x.ProductId)
<button type="submit">Add product to cart</button>
}

另一种可能性是使用 AJAX 来调用此方法。这样,用户在调用之前将停留在页面上,无论他在哪里。

关于asp.net-mvc-3 - 返回 asp.net mvc 中的当前 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com