我将这个ViewModel传递给视图:
public class CreateFormViewModel
{
public string Id { get; set; }
[Required]
public string Name { get; set; }
public string FormPropertiesList { get; set; }
}
提交表单时,FormPropertiesList将包含一个将在服务器端处理的JSON数组。
但是,问题是当我加载页面时,FormPropertiesList为空。这意味着除非包含任何数据,否则我将无法解析它。
现在这是我得到的错误
未捕获到的SyntaxError:意外令牌!==
这是我的jquery代码:
if (typeof @Model.FormPropertiesList !== 'undefined') {
console.log(JSON.parse(@Model.FormPropertiesList));
}
在控制台中,我可以看到@ Model.FormPropertiesList为空白。不是null或“”,而是空白。
在加载页面之前,我曾尝试将其声明为空服务器端,但是会发生相同的问题。
答案 0 :(得分:1)
鉴于@Model.FormPropertiesList
可以将一个空字符串输出到前端逻辑,那么在尝试解析该字符串之前检查该字符串的长度会更有意义。
不要忘记在输出值时需要在客户端添加引号,以便将其正确解释为字符串:
if ('@Model.FormPropertiesList'.length !== 0) {
var obj = JSON.parse('@Model.FormPropertiesList');
console.log(obj);
}
请注意,可以通过合并值来使其更简洁:
var obj = JSON.parse('@Model.FormPropertiesList' || '{}');
console.log(obj);