首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript片段中使用C#列表

在javascript片段中使用C#列表
EN

Stack Overflow用户
提问于 2013-09-26 13:54:23
回答 4查看 251关注 0票数 0

我想在视图中的C#片段中使用来自JS的两个数组。为了做到这一点,我尝试使用JavaScriptSerializer(),但是数据数组没有得到任何值(视图的源代码如下所示):

代码语言:javascript
运行
复制
 var mydata = 

我遇到的每个示例都使用C#标记在JS中注入<%=%>代码。这不会给我带来任何结果,因为我使用的是ASP.NET MVC 4。

代码语言:javascript
运行
复制
<script type="text/javascript">
   var mydata = @{ new JavaScriptSerializer().Serialize(Model.GetData());}

 $(function () {
  // Generates a chart using the mydata array
 }
</script>

这个语法有什么问题吗?当我试图为它下面的标题添加一个数组时,我会收到一个编译错误。有警告说行没有终止,但是当我在每一行的末尾添加;时,它也会出现语法错误(没有特定的错误,只有‘语法错误’)。

GetData()GetHeaders()中的数据定义如下:

代码语言:javascript
运行
复制
public List<int> GetData() {
    return new List<int>(new[] { 4, 5, 6});
}

我试着把它作为一个int[]返回,但是这并没有什么区别。如何在C#片段中使用JavaScript列表/数组?

编辑:未知编译错误的图像。当我不放置分号时,就会在第二个var上出现语法错误。我得到了终止行尾的建议,这将分号添加到末尾。然后,我有如下所示的问题。奇怪的细节:文件的一侧没有红色的条,通常指示错误的位置。

这就是说:在执行脚本时,数组有它们的期望值,一切都按其应有的方式工作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-26 14:00:27

问题是@{ }创建了一个代码块,它没有将结果打印到呈现的页面。你可以这样做:

代码语言:javascript
运行
复制
@{ 
    var serializer = new JavaScriptSerializer();
    @serializer.Serialize(Model.GetData())
}

或者更好的是,使用Json助手:

代码语言:javascript
运行
复制
@Json.Encode(Model.GetData())
票数 6
EN

Stack Overflow用户

发布于 2013-09-26 14:03:00

当您将操作包含在代码块中时,除非您显式地告诉它呈现,否则不会呈现输出。

试试这个:

代码语言:javascript
运行
复制
@Html.Raw(Json.Encode(Model.GetData()))
票数 1
EN

Stack Overflow用户

发布于 2013-09-26 14:08:34

尝试将序列化程序的结果放在单引号中,如:

代码语言:javascript
运行
复制
<script type="text/javascript">
    var data = '@{ new JavaScriptSerializer().Serialize(Model.GetData());}';
</script>

您可以创建一个HTML助手来调用它,例如:

代码语言:javascript
运行
复制
<script type="text/javascript">
    var data = '@Html.JSSerializerHelper(Model.GetData())';
</script>

只有一种我认为最优雅的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19030244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档