列表<T>到Javascript数组
List<T> to Javascript array
我定义了以下类
public ReportsViewmodel
{
public GeographicData GeographicData { get; set; }
...
}
public class GeographicData
{
public List<ZipcodeData> Regions { get; set; }
...
}
public class ZipcodeData
{
//TupleList is defined as public class TupleList<T1, T2> : List<Tuple<T1, T2>>
public TupleList<double, double> Boundries { get; set; }//Contains list of Lat/Long values for plotting on a map.
}
在我看来,我需要做这样的事情:
foreach (region in GeographicData.Regions)
foreach (boundry in region.Boundries)
add item1 & item2 to a 2 dimensional Javascript array
最后,我希望我的javascript数组看起来像:
var vmBoundries= [[34.1, -85.4], [34.8, -85.234], [34.347, -85.345], [34.541, -85.434], [34.2341, -85.4]];
我不知道如何从我的视图中访问数据。我不断遇到范围问题。例如,如果我尝试使用javascript For循环,我就无法索引到ViewModel列表中,因为当我调用@Model.GeographicData.Regories[I]…时,循环变量是未定义的
那么,如何将ViewModel中的数据拉入Javascript数组呢?
通常您会:
- 将数据转换为所需格式
- 将转换后的数据序列化为JSON
- 为序列化的值分配一个JavaScript变量
所以,像这样的东西:
@{
IEnumerable<double[]> flattened = vm.GeographicData.Regions
.SelectMany(region => region.Boundries
.Select(tpl => new double[] { tpl.Item1, tpl.Item2 }));
string json = new JavaScriptSerializer().Serialize(flattened);
}
<script type="text/javascript">
var arr = @json;
// do something with arr.
</script>
类似于:
var array = (from region in GeographicData.Regions
select from boundry in region.Boundries
select new object[] { boundry.Item1, boundry.Item2 }).ToArray();
这将为您提供一个2D数组,然后您可以对其进行序列化。
示例:https://dotnetfiddle.net/Y9KOaq
我会使用javascript序列化程序来简化它:
using System.Web.Script.Serialization;
并在ReportsViewmodel
:中添加一个helper方法
public string GetBoundriesJs()
{
var pairs =
from r in GeographicData.Regions
from b in r.Boundries
select new[] { b.Item1, b.Item2 };
return new JavaScriptSerializer().Serialize(pairs);
}
然后你可以把它称为你认为需要的地方:
var vmBoundries = @Model.GetBoundriesJs();
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)