ASP.NET Core C#使用jQuery Datatable时出现Unexpected token错误如何解决
错误原因
直接在JS代码中输出@ViewBag.UsersArray时,Razor引擎不会自动将C#数组转为JS可识别的对象数组,只会调用数组对象的ToString()方法输出类型名称,导致JS解析时出现语法错误,触发Unexpected token ']'报错。
解决方法
你需要手动将C#数组序列化为合法的JSON字符串,再输出到JS代码中,同时用Html.Raw禁止Razor自动转义JSON中的引号:
- 如果你使用的是ASP.NET Core,直接使用内置的System.Text.Json序列化:
$(document).ready(function () { $('#users').DataTable({ data: @Html.Raw(System.Text.Json.JsonSerializer.Serialize(ViewBag.UsersArray)), columns: [ { data: 'id' }, { data: 'username' }, { data: 'balance' }, { data: 'contract_id' } ] }); });
- 如果你使用的是.NET Framework,使用Newtonsoft.Json序列化:
$(document).ready(function () { $('#users').DataTable({ data: @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.UsersArray)), columns: [ { data: 'id' }, { data: 'username' }, { data: 'balance' }, { data: 'contract_id' } ] }); });
注意事项
- 序列化时如果配置了驼峰命名转换,需要保证
columns中配置的data字段名和序列化后的JSON属性名完全匹配,避免Datatable找不到对应字段报错。 - 尽量不要直接用ViewBag传递复杂类型数据,优先考虑强类型视图模型传递数据,避免类型转换错误。
内容的提问来源于stack exchange,提问作者Abdulsalam Elsharif
相关产品推荐
相关产品推荐

