Getting wrong Url.PathAndQuery

本文关键字:PathAndQuery Url wrong Getting | 更新日期: 2023-09-27 18:09:03

我有一个动作链接:

@Html.ActionLink("Shopping cart", "Index", "Cart", new { returnUrl = Request.Url.PathAndQuery }, null)

和将商品添加到购物车的代码:

<script type="text/javascript">
    $(document).ready(function () {
        $("#addToCart_@(Model.ProductID)").click(function () {
            var quantity = $("#Quantity_@(Model.ProductID)").val();
            var productId = "@Model.ProductID";
            var dataToBeSent = { 'quantity': quantity, 'productId': productId};
            $.ajax({
                type: "POST",
                url: '/Cart/AddToCart/',
                data: dataToBeSent,
                success: function (result) {
                    $('#cartholder').html(result);
                }
            });
        });
    });
</script>

当我试图在将物品添加到购物车后遵循动作链接时,Request.Url.PathAndQuery具有值/Cart/AddToCart/

如何获取当前url?

Getting wrong Url.PathAndQuery

您需要使用:

 Request.RawUrl 

这将获得您在浏览器中看到的URL。当使用Url编写与MVC的请求。Url将是重写后的路径

看起来像你设置你的URL为/Cart/AddToCart/。它就在您的AJAX请求url: '/Cart/AddToCart/'中。这就是你的URL(不包括方案和主机)。

你指定type: "POST",所以你的有效载荷(你的data: dataToBeSent)不作为URL的一部分发送。只有在使用GET时,数据才会在URL中发送。当你使用POST时,它在请求体中,而不是URL。

(不要把它改成GET。它现在似乎有效,但以后会让你头痛。GET请求可以由代理服务器缓存——不适合修改状态的请求,比如向购物车中添加东西。

所以在回答你问的问题时, Request.Url.PathAndQuery 如何获得URL。只是URL不是你想要的。您想获得您的POST数据,但这通常是在ASP中完成的。净MVC。

System.Web.HttpContext.Current.Request.Url