无法在 javascript 中使用我的模型数据
Cannot use my model data in javascript
你能帮我找出我做错了什么吗?
我的模型有一个名为 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
returns 对象类型的名称。
如果您尝试使用纯色串,您可以这样做:
var clrs = '@string.Join(", ", Model.AllKnownColors)';
如果你真的想把Model.AllKnownColors
变成一个JavaScript数组,你可以这样做:
var clrs = @Html.Raw(Json.Encode(Model.AllKnownColors));
请注意,在这两种情况下,JSON.parse
都是不必要的。
你能帮我找出我做错了什么吗?
我的模型有一个名为 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
returns 对象类型的名称。
如果您尝试使用纯色串,您可以这样做:
var clrs = '@string.Join(", ", Model.AllKnownColors)';
如果你真的想把Model.AllKnownColors
变成一个JavaScript数组,你可以这样做:
var clrs = @Html.Raw(Json.Encode(Model.AllKnownColors));
请注意,在这两种情况下,JSON.parse
都是不必要的。