var myArray = [
<% foreach (string item in ViewData["list"] as List<string>) { %>
"<%= item %>",
<% } %>
];
据报道,最后有一个逗号会在 IE 中中断,所以我建议使用视图扩展帮助器方法来使代码更易于管理:
<%= Html.JavaScriptArray(ViewData["list"] as List<string>, "myArray") %>
将此辅助方法放在您的解决方案中的某个位置:
public static string JavaScriptArray(this HtmlHelper htmlHelper, IList<string> values, string varName) {
StringBuilder sb = new StringBuilder("var ");
sb.append(varName);
sb.append(" = [");
for (int i = 0; i < values.Count; i++) {
sb.append("'");
sb.append(values[i]);
sb.append("'");
sb.append(i == values.Count - 1 ? "\n" : ",\n"); // Not the prettiest but it works...
}
sb.append("];");
return sb.toString();
}
从技术上讲,扩展方法可以去任何地方,您只需要在 .aspx 文件中包含命名空间。实际上最好将它们保持在逻辑分离的类中,例如MyApp.Mvc.Extensions.JavaScriptExtensions
,MyApp.Mvc.Extensions.LinkExtensions