javascript - 如何使用 Razor 语法将数组从 ViewBag 转换为 JScript 数组?

标签 javascript c# arrays asp.net-mvc razor

我正在尝试将以下 razor 语法重新编码为可行的代码,但遇到了困难:

    var ServiceIndex = @ViewBag.ServiceID ;
    var ServiceName = @ViewBag.ServiceName ;
    var ServiceNotes = @ViewBag.ServiceNotes ;

我的问题是,现在这 3 个数组的 ViewBag 是空的,因此它在单独的分号上呕吐。

最佳答案

您需要在服务器端将其转换为 JSON。

<script>
    var ServiceNotes = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.ServiceNotes)));
    var ServiceName = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.ServiceName)));
    var ServiceIndex = @(Html.Raw(JsonConvert.SerializeObject(ViewBag.ServiceIndex)));
</script>

然后直接在JS中访问即可。

JsonConvert 正确处理了空数组,因此,如果它为空,您将得到类似的内容

var ServiceNotes = [];

为了方便调试并避免嵌套函数调用,您还可以拆分序列化和输出。

@{
   string serviceNotesJson = JsonConvert.SerializeObject(ViewBag.ServiceNotes);
   string serviceNameJson = JsonConvert.SerializeObject(ViewBag.ServiceName);
   string serviceIndexJson = JsonConvert.SerializeObject(ViewBag.ServiceIndex);
}

@section scripts 
{
    <script>
        var ServiceNotes = @(Html.Raw(serviceNotesJson));  
        var ServiceName = @(Html.Raw(serviceNameJson));
        var ServiceIndex = @(Html.Raw(serviceIndexJson));
    </script>
}

关于javascript - 如何使用 Razor 语法将数组从 ViewBag 转换为 JScript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658036/

相关文章:

javascript - Webpack:如何将 javascript 注入(inject) HTML 而不是单独的 JS 文件

javascript - 使用 Javascript 获取网页的文本

javascript - 使用新值更新时出现数组问题

javascript - 如何从对象数组的多个键中获取所有值?

c# - 如何在本地 IIS 而非 Express 中调试 ASP.NET 5 Web 应用程序

c# - visual studio 在处理异常时中断

c# - 使用 Silverlight 4 的客户端 Excel 互操作

c++ - 从 std::vector<glm::vec3> 获取一个 float 类型的数组指针

Java比较int数组,过滤并插入或更新到数据库

c - 从文件动态分配二维 double 组