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

ASP.NET中如何将控制器返回的MongoDB字符串列表传递给JavaScript

解决Razor视图中无法将后端列表传递给JavaScript的问题

首先,你当前的写法存在几个小问题,同时还有更简洁可靠的方案可以解决这个问题,我来一步步给你梳理:

方法一:用JSON序列化直接传递(最推荐)

这种方式比逐个push要高效得多,还能自动处理字符串中的特殊字符(比如引号),避免JS语法错误:

<script>
    // 如果ListaNames是包含name属性的实体集合,先提取name字段再序列化
    var listNames = @Json.Serialize(Model.ListaNames.Select(item => item.name));
    
    // 如果ListaNames本身就是字符串数组,直接序列化即可
    // var listNames = @Json.Serialize(Model.ListaNames);
</script>

方法二:修正你的foreach写法

如果你坚持用循环push的方式,需要修正Razor语法的小错误,同时确保Model的属性可访问:

<script>
    var listNames = [];
    @foreach(var item in Model.ListaNames) {
        @:listNames.push("@item.name");
    }
</script>

这里要注意两个关键点:

  • 去掉@Model.ListaNames里多余的@——Razor在foreach代码块内已经处于C#上下文,直接写Model.ListaNames即可
  • 用@:标记后续内容为输出文本,避免Razor把JS代码当成C#代码解析

必看的前提检查

不管用哪种方法,都要确保你的ViewModel类中ListaNames是public可访问的属性,比如:

public class YourPageViewModel
{
    // 必须是public,Razor视图才能读取到
    public List<NameEntity> ListaNames { get; set; }
    // 如果是字符串数组就是:public string[] ListaNames { get; set; }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:24:17