我的问题是如何(如果可能)从string[] a;
我通过 视图通过ViewBag
如何获得一个JavaScript数组的字符串。在控制器的ASP NET MVC阵列到客户端阵列
我想使用这个,因为我从数据库中获取一组数据,并且我想在 视图中制作图表,并且我需要一个JavaScript数组。
我的问题是如何(如果可能)从string[] a;
我通过 视图通过ViewBag
如何获得一个JavaScript数组的字符串。在控制器的ASP NET MVC阵列到客户端阵列
我想使用这个,因为我从数据库中获取一组数据,并且我想在 视图中制作图表,并且我需要一个JavaScript数组。
是很容易的 “渲染” 的数组为JavaScript对象,使用string.Join
或类似:
@{
ViewBag.a = new int[] { 1, 2, 3 };
ViewBag.b = new string[] { "a", "b", };
}
<script type='text/javascript'>
// number array
var a = [ @(string.Join(", ", (int[])ViewBag.a)) ];
console.log(a); // [1, 2, 3]
// string array -- use Html.Raw
var b = [@Html.Raw("'" + string.Join("', '", (string[])ViewBag.b) + "'")];
console.log(b);
</script>
控制器
public ActionResult Index()
{
int[] myArray = new int[] { 1, 3, 5, 7, 9 };
ViewBag.myArray = myArray;
return View();
}
查看
@{
ViewBag.Title = "Index";
var myArray = (int[])ViewBag.myArray;
var myjsstring = "";
for(int i =0;i<myArray.Length;i++)
{
myjsstring += "mycars[" + i.ToString() + "] = " + myArray[i] + ";";
}
}
<script type="text/javascript">
var mycars = new Array();
@myjsstring
</script>
也许:
@{
ViewBag.foo = new string[] { "a", "b", "c" };
}
var newFoo = @Html.Raw(Json.Encode(@ViewBag.foo));
太好了。还有一个问题。如果我有一个原始数组的字符串,并希望有一个js数组的字符串? – coredump
为什么不'Json.Encode'? – haim770
@coredump看到我的更新 - 你必须使用'Html.Raw',否则引号将得到HTML编码。 – McGarnagle