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

ASP.NET MVC Core中如何通过JavaScript访问ViewModel整数列表?

问题分析与解决方法

错误原因

你直接在Razor视图中输出@Model.SelectedIds时,Razor引擎会调用该List对象的ToString()方法,而.NET中List<T>的默认ToString()返回的是类型的完整名称,也就是你看到的System.Collections.Generic.List1[System.Nullable1[System.Int32]]。这不是有效的JavaScript语法,自然会导致控制台报错。

正确解决方案

需要将.NET集合对象序列化为JavaScript可识别的JSON格式数组,以下是两种常用实现方式:

方式1:使用ASP.NET Core内置的Json.Serialize

@model Project.ViewModels.Test.MyViewModel

$(function() {
    var test = @Json.Serialize(Model.SelectedIds);
});

该方法会直接将List序列化为合法的JS数组,比如列表包含1、null、3时,生成的代码为var test = [1,null,3];,可被JS直接识别。

方式2:使用Newtonsoft.Json(Json.NET)

如果你的项目依赖Newtonsoft.Json,可使用JsonConvert.SerializeObject,注意需要配合Html.Raw避免HTML编码:

@using Newtonsoft.Json
@model Project.ViewModels.Test.MyViewModel

$(function() {
    var test = @Html.Raw(JsonConvert.SerializeObject(Model.SelectedIds));
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:25:35