无法在 javascript 中使用我的模型数据

Cannot use my model data in javascript

本文关键字:我的 模型 数据 javascript      更新时间:2023-09-26

你能帮我找到我做错了什么吗?

我的模型有一个名为AllKnownColors的字符串[]字段。我正在尝试在我的 JavaScript 代码中使用它,如下所示:

    var clrs = JSON.parse('@Html.Raw(Model.AllKnownColors)');

但它不起作用。调试器向我显示以下内容:

var clrs = JSON.parse('System.String[]');

和以下错误:未捕获的语法错误:意外的令牌 S

而且我无法弄清楚出了什么问题。

谢谢。

代码

var clrs = JSON.parse('@Html.Raw(Model.AllKnownColors)');

类似于

var clrs = JSON.parse('@Html.Raw(Model.AllKnownColors.ToString())');

您需要将 Model.AllKnownColors 转换为 json。您可以使用Newtonsoft JSON来实现此目的。

var clrs = JSON.parse('@Html.Raw(JsonConvert.SerializeObject(Model.AllKnownColors))');

或者您可以编写自己的转换方法。Newtonsoft JSON是简单而不错的选择。您自己的方法可能会更快。

Model.AllKnownColors是一个string数组。 Html.Raw接受单个string作为参数。由于Model.AllKnownColors不是string,C#框架调用对象的ToString方法。默认情况下,ToString返回对象类型的名称。

如果您尝试使用纯颜色字符串,则可以执行以下操作:

var clrs = '@string.Join(", ", Model.AllKnownColors)';

如果你真的想把Model.AllKnownColors变成一个JavaScript数组,你可以这样做:

var clrs = @Html.Raw(Json.Encode(Model.AllKnownColors));

请注意,在这两种情况下,JSON.parse都是不必要的。