首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取错误的Url.PathAndQuery

获取错误的Url.PathAndQuery
EN

Stack Overflow用户
提问于 2011-09-21 00:04:50
回答 3查看 3.4K关注 0票数 0

我有一个动作链接:

代码语言:javascript
运行
复制
@Html.ActionLink("Shopping cart", "Index", "Cart", new { returnUrl = Request.Url.PathAndQuery }, null)

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

代码语言:javascript
运行
复制
<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?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-21 01:40:12

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

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

(并且不要仅仅将其更改为GET。它现在看起来是有效的,但是以后会让你头疼。GET请求可以由代理服务器缓存--不适用于修改状态的请求,如向购物车中添加东西。)

因此,在回答您提出的问题时,Request.Url.PathAndQuery是您获取网址的方式。只是URL不是你想要的。您想要获取POST数据,但这通常是在ASP.NET MVC中完成的。

票数 2
EN

Stack Overflow用户

发布于 2011-09-21 02:37:26

您需要使用:

代码语言:javascript
运行
复制
 Request.RawUrl 

这将获得您在浏览器中看到的URL。当使用Url编写时,就像使用MVC一样,Request.Url将是重写的路径。

票数 3
EN

Stack Overflow用户

发布于 2011-09-21 00:12:16

System.Web.HttpContext.Current.Request.Url

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7488228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档