在Razor中初始化JavaScript数组

用户名

我有一个在视图中使用Razor的ASP.NET MVC应用程序。我在控制器中构建一个JavaScript数组。但是有时候,它将不存在。因此,我想在客户端初始化它。为了做到这一点,我有以下几点:

var list = '@(ViewBag.List == null ? [] : ViewBag.List)';

不幸的是,这会产生一个错误。错误是:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS1525: Invalid expression term '['

有没有办法在剃刀中对数组使用三元运算符?如果是这样,怎么办?

蒂莫西·希尔兹

由于Javascript使用JSON进行操作,因此您应使用JSON序列化列表:

@using Newtonsoft.Json

var list = @Html.Raw(JsonConvert.SerializeObject(ViewBag.List));
list = list || [];

通常,@Html.Raw(JsonConvert.SerializeObject(obj))将C#对象obj作为JSON注入视图的正确方法是IHtmlString Html.Raw(string)只需返回string它的传递并将其呈现而无需任何HTML转义,这就是将对象作为JSON呈现到Javascript代码块中时想要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章