从代码后面的例程传递数组到javascript

时间:2016-12-26 21:34:35

标签: javascript c# arrays

我在C#代码隐藏中有一个过程,它从数据库中的几个字段读取值,并将每个字段放入其自己的1维数组中。现在我需要获取这些值并将它们传递给客户端,以便我可以在热敏打印机上打印出来 在我的代码隐藏中,我有:

        Public String[] PayType = new string[DetailLines];
        Public String[] PayQuantity = new string[DetailLines];
        Public String[] PayAmount = new string[DetailLines]'
        Public String Location;

       Protected Void PrintReceipt()
       *Miscellaneous code down to this point not shown.* 
        **DetailLines comes from record count**
       Location = "CA";
       PayType = new string[DetailLines];
       PayQuantity = new string[DetailLines];
       PayAmount = new string[DetailLines]'
        foreach (DataRow row in dtPOSdetail.Rows)
        {
           PayType[LineNumber] = row["fldDescription"].ToString();
           PayQuantity[LineNumber] = row["fldQuantity"].ToString();
           PayAmount[LineNumber] = string.Format("{0:C}",
           Decimal.Parse(row["fldAmount"].ToString()));
           LineNumber++;
         }

在我的JavaScript中我有:

var getLocation = '<%= Location %>'
var getPayType =  '<%= PayType %>'
var getPayQuantity = '<%= PayQuntity %>'
var getAmount = '<%= PayAmount %>'

我希望能够在我的打印机设置中循环浏览三个数组来建立订单项。

request += builder.createTextElement({ data: "Location: " + GetLocation + "\\n" });
for (int i = 0; i < PayType.Length; i++)
{
   request += builder.createTextElement({ data: PayType[i] + "\\x9" + PayQuantity[i] + "\\x9" + "     " + PayAmount[i] + "\\n"});
}

我可以打印出Location,但每个数组的值显示为'System.String []。我读到的大多数主题都令人困惑,显示数组被加载为'var myarray(“apples”,“oranges”,“peaches”)。我也看过有关序列化数组的话题,但这一点也不清楚。 任何如何完成我所展示的内容的例子将不胜感激。 谢谢 查尔斯

1 个答案:

答案 0 :(得分:1)

这是因为Razor(或您的veiw引擎)正在调用注入到视图脚本中的对象的ToString()方法。

使用字符串数组类型生成您所看到的内容: System.String[]

由于javascript变量期望JSON格式化对象实例化变量,因此您可以简单地序列化为JSON数组,如下所示:

var getPayType = <%= Newtonsoft.Json.JsonConvert.SerializeObject(PayType) %>;