【问题标题】:C# MVC - Passing a List from C# backend to JavaScriptC# MVC - 将列表从 C# 后端传递到 JavaScript
【发布时间】:2020-10-26 17:16:06
【问题描述】:

我是 MVC 模式的新手,在将变量从 C# 传递给 JS 时遇到问题。

我将一个列表从视图模型传递到我存储在隐藏变量中的视图:

<input type="hidden" id="myID" name="myID" value="@Model.myList">

然后当我试图在 JS 中获取这个变量时:

const myList = document.getElementById("myID").value;

但后来我得到了一个 System.Collections.Generic.List,我对此无能为力。我怎样才能做到这一点,以便我可以在 JS 中访问此列表?

【问题讨论】:

    标签: list model-view-controller model


    【解决方案1】:

    .NET 中对象的默认字符串表示是类名。你不想要一个字符串,你想要实际的对象本身。在这种情况下,听起来您要做的是对数据进行 JSON 编码。因此,您根本不需要<input>,您可以直接在视图中的 JavaScript 代码中执行此操作:

    const myList = @Html.Raw(Json.Encode(Model.myList));
    

    这将导致 JavaScript 中的 myList 成为服务器端模型上 myList 属性中的对象数组。

    【讨论】:

    • 感谢您的回复。我收到一条错误消息:“IJsonHelper”不包含“Encode”的定义,并且找不到接受“IJsonHelper”类型的第一个参数的扩展方法“Encode”(您是否缺少 using 指令或程序集引用? )
    • @ziBBit: 嗯...它可能会根据 MVC 版本发生巨大变化。 This question 似乎为其他 MVC 版本提供了一些建议。相同的概念,只是叫法不同。
    猜你喜欢
    • 2021-07-05
    • 2021-12-11
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多