javascript - Asp.net 将数据从代码隐藏传递到 Javascript 并调用数组

标签 javascript c# asp.net arrays multidimensional-array

我有一个 ASP.NET 项目,它使用一些分析控件来查看各种数据。这些控件通过 JavaScript 函数填充,如下所示:

 Morris.Bar({
              element: 'hero-bar',
              data: [
                  { device: '1', sells: 136 },
                  { device: '3G', sells: 1037 },
                  { device: '3GS', sells: 275 },
                  { device: '4', sells: 380 },
                  { device: '4S', sells: 655 },
                  { device: '5', sells: 1571 }
              ],
              xkey: 'device',
              ykeys: ['sells'],
              labels: ['Sells'],
              barRatio: 0.4,
              xLabelMargin: 10,
              hideHover: 'auto',
              barColors: ["#3d88ba"]
          });

我需要做的是通过传递后面代码中的一些值(我从数据库中获取实际值)来填充“data: []”数组。

任何人都可以帮助我如何传递数据以及需要以什么格式传递数据?如何将变量添加到 JavaScript 中?

我可以通过在集合后面的代码中运行 foreach 循环将其作为字符串数组传递吗,所以:

foreach(var item in items)
{
    //build array here called "myDataFromCodeBehind" 
    sb.Append(" { device: xVariable, sells: yVariable },");

}

然后从 Javascript 调用字符串数组

   var myData = "<%=myDataFromCodeBehind %>";

    Morris.Bar({
              element: 'hero-bar',
              data: [myData],
              // etc

或者这行不通?有件事告诉我我的做法是错误的。我是 JavaScript 新手,不确定这是否有效。

最佳答案

首先定义客户端中使用的 JSON 对象,例如:

var YourBarParam = {
              element: 'hero-bar',
              data: [
                  { device: '1', sells: 136 },
                  { device: '3G', sells: 1037 },
                  { device: '3GS', sells: 275 },
                  { device: '4', sells: 380 },
                  { device: '4S', sells: 655 },
                  { device: '5', sells: 1571 }
              ],
              xkey: 'device',
              ykeys: ['sells'],
              labels: ['Sells'],
              barRatio: 0.4,
              xLabelMargin: 10,
              hideHover: 'auto',
              barColors: ["#3d88ba"]
          }

下一步进入页面http://json2csharp.com/并生成描述 JSON 对象的类。

public class Datum
{
    public string device { get; set; }
    public int sells { get; set; }
}

public class RootObject
{
    public string element { get; set; }
    public List<Datum> data { get; set; }
    public string xkey { get; set; }
    public List<string> ykeys { get; set; }
    public List<string> labels { get; set; }
    public double barRatio { get; set; }
    public int xLabelMargin { get; set; }
    public string hideHover { get; set; }
    public List<string> barColors { get; set; }
}

现在在代码后面定义公共(public)页面方法或属性,您将在其中返回或存储 JSON 格式的对象。

使用newtonsoft nuget包https://www.nuget.org/packages/Newtonsoft.Json/ d生成你的对象:

public static string yourObject = string.Empty;
public static string getBarObject()
{
RootObject YourBarParam = new RootObject();
product.element= "hero-bar";
product.data = new List<Datum>();
mydatun = new Datum();
mydatun.device = "1";
mydatun.sells = "whatever"
product.data.add(mydatun);
...
//and so on
...

 yourObject = JsonConvert.SerializeObject(YourBarParam );
 return yourObject;
}

在页面标记客户端脚本部分添加

var myData = "<%# getBarObject()%>";

var myData = "<%= yourObject %>";

如果您只需要数据数组,请返回此

 yourObject = JsonConvert.SerializeObject(YourBarParam.data );

关于javascript - Asp.net 将数据从代码隐藏传递到 Javascript 并调用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098558/

相关文章:

c# - Azure 辅助角色的多个实例有多少个队列?

javascript - JQuery Ajax填充javascript变量问题

c# - 使用 Dapper QueryAsync 方法时 connection.OpenAsync 和 connection.Open 之间的区别

javascript - 装饰器 : "this" is undefined when accessed in descriptor. 值

Chrome 中的 Javascript FileReader.onload event.currentTarget.result.byteLength = 0

c# - ContinueWith 方法返回的任务不需要 Wait() 方法?

javascript - 在 ASP.Net 应用程序中将 C# 内联变量传递给 Javascript 函数

c# - 如何使用 itextsharp 将 html 页面转换为带有 css 的 pdf?

javascript - 与其他模块共享 socket.io 会给出空对象

javascript - 单击以切换以获得更好的性能方法