如何将控制器返回的List<CartItemDetailDto>列表赋值给jQuery变量?
解决方法
直接写@(Model)肯定不行,因为MVC会把List对象直接执行ToString(),输出的是类似System.Collections.Generic.List1[CartItemDetailDto]`的字符串,不是有效的JavaScript对象/数组。
正确的做法是把模型序列化为JSON格式,再赋值给JS变量,具体代码分两种情况:
.NET Core/.NET 5+版本
<script> var modelList = @Html.Raw(System.Text.Json.JsonSerializer.Serialize(Model)); </script>
旧版ASP.NET MVC(比如MVC 5及以前)
<script> var modelList = @Html.Raw(Json.Encode(Model)); </script>
关键说明
- 用
Html.Raw是为了防止JSON字符串被HTML编码(比如双引号转成"),确保输出的是JS能直接解析的合法JSON。 - 如果你的
CartItemDetailDto里有循环引用或者敏感字段,序列化前要处理好,比如用特性标记忽略敏感字段,或者配置序列化器排除循环引用。
内容的提问来源于stack exchange,提问作者nnmmss
相关产品推荐
相关产品推荐

