在Razor中初始化JavaScript数组

Initializing a JavaScript array in Razor

本文关键字:JavaScript 数组 初始化 Razor      更新时间:2023-09-26

我有一个ASP.NET MVC应用程序,它在视图中使用Razor。我正在我的控制器中构建一个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代码块中时所需要的。