无法在 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
返回对象类型的名称。
如果您尝试使用纯颜色字符串,则可以执行以下操作:
var clrs = '@string.Join(", ", Model.AllKnownColors)';
如果你真的想把Model.AllKnownColors
变成一个JavaScript数组,你可以这样做:
var clrs = @Html.Raw(Json.Encode(Model.AllKnownColors));
请注意,在这两种情况下,JSON.parse
都是不必要的。
相关文章:
- Angular没有根据模型更新我的选择元素
- 在这种情况下,我应该如何在余烬中放置我的模型有很多关系
- 当输入键由jquery触发时,我的模型是未定义的
- 如果ng-if的计算结果为false,AngularJS会使我的模型数据无效
- MVC4剃刀在客户端javascript中访问我的模型中的JsonResult数据
- 无法在 javascript 中使用我的模型数据
- 为什么我的模型中的默认属性返回未定义
- 在 FTL 中向我的模型发送一个 JavaScript var
- Backbone fetch返回我的模型的所有实例
- 用Backbone.js设置我的模型
- 如果我的模型是MVC3中的QueryTable,如何访问Javascript中的项目数据
- 如何使用Parse cloud js保存我的模型
- 我的模型应该有多细粒度
- 当试图访问我的模型上的方法时,得到Javascript TypeError
- 我的dom不反映我的模型更新值,更新是由一个函数,这是按钮单击CAL完成的
- Backbone.js,require.js:我如何将我的模型、视图和集合转换为require.js模块
- 为什么我的模型值为空,如果我不包装脚本代码中的单击事件
- 我如何验证我的模型,当我有一个数组属性
- 为什么我不能从javascript访问我的模型对象
- ng-repeat不能用Object.create声明我的模型