You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core MVC读取JS设置的productsInCart Cookie返回null问题求助

问题原因

你遇到的productsInCart Cookie读取为null的问题由两个常见原因导致:

  1. 存储Cookie时未对JSON字符串做编码:JSON包含的双引号、逗号等属于Cookie值的非法字符,.NET的Cookie解析器会判定该值无效直接返回null,而你的cartNumbers值为纯数字无特殊字符所以可以正常读取。
  2. 你的JS代码存在语法错误:addItemToCart函数的闭合括号位置错误,data.push(curObj) 被写在了函数作用域之外,会导致存储的Cookie值不符合预期。

修复步骤

1. 修正JS语法错误

调整addItemToCart函数的代码结构,把data.push(curObj)放到函数内部:

function addItemToCart(data, pId, quantity, curObj) {
    for (let obj of data) {
        if (obj.slNo === pId) {
            obj.pQty = quantity;
            return;
        }
    }
    // 放到函数内部,循环结束没找到对应商品再新增
    data.push(curObj);
}

2. 存储Cookie前对值做编码

修改setCookie的调用逻辑,对JSON字符串做URL编码后再存入Cookie:

// 原有逻辑:setCookie(key, value, 90);
// 替换为:
setCookie(key, encodeURIComponent(value), 90);

3. .NET端正确读取Cookie

注意Request.Cookies[key]返回的是Cookie对象,需要显式取Value属性,如有需要可以主动做URL解码:

// 读取时优先判断Cookie是否存在,避免空引用异常
var ProductInCart = Request.Cookies["productsInCart"] != null 
    ? HttpUtility.UrlDecode(Request.Cookies["productsInCart"].Value) 
    : null;
var CartNumber = Request.Cookies["cartNumbers"] != null 
    ? Request.Cookies["cartNumbers"].Value 
    : null;

补充说明

单条Cookie的最大容量通常为4KB,如果你的购物车商品数量较多,建议改用本地存储或者后端Session存储,避免超出Cookie长度限制导致数据丢失。

内容的提问来源于stack exchange,提问作者level 1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:45:06