【发布时间】:2013-07-09 01:15:16
【问题描述】:
我的问题是如何(如果可能的话)从像 string[] a; 这样的数组中将它传递给
通过ViewBag查看,如何获取javascript字符串数组。
我想使用它,因为我从数据库中获取了一组数据,并且我想在 查看以制作图表,为此我需要一个 javascript 数组。
【问题讨论】:
标签: c# javascript asp.net asp.net-mvc razor
我的问题是如何(如果可能的话)从像 string[] a; 这样的数组中将它传递给
通过ViewBag查看,如何获取javascript字符串数组。
我想使用它,因为我从数据库中获取了一组数据,并且我想在 查看以制作图表,为此我需要一个 javascript 数组。
【问题讨论】:
标签: c# javascript asp.net asp.net-mvc razor
使用string.Join 或类似方法可以很容易地将数组“渲染”到 Javascript 对象:
@{
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>
【讨论】:
Html.Raw,否则引号会被 HTML 编码。
@Html.Raw(Json.Encode(...)) 让我感到奇怪。它将& 渲染为"\u0026"。
Json.Encode 上没有遇到过这样的问题,但我相信@McGarnagle 知道他在说什么。但是,无论如何,您的数组不包含 &,所以只需尝试 var a = @Html.Raw(Json.Encode(new int[] {1,2,3})); 看看它是否对您有好处。
控制器
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));
【讨论】: