当前位置:  开发笔记 > 编程语言 > 正文

需要从Viewdata列表中填充javascript数组的简单示例

如何解决《需要从Viewdata列表中填充javascript数组的简单示例》经验,为你挑选了1个好方法。

可能有一种更简单的方法可以做到这一点,如果有的话我会全神贯注.我的情况是我在表单上有一个下拉列表,我成功填充了文本和值.我还需要在客户端上可用的db表中的相同表行中添加其他相关字符串值,因此当用户从下拉列表中选择时,此相关数据将填充在表单上的文本框中.我正在处理的记录只有4条,所以存储在客户端上没什么大不了的.我想过将这些数据作为列表通过ViewData传递并加载到javascript数组中.当用户从下拉列表中选择时 - 我将确定所选索引并从阵列中获取所需的相关数据.我已经将下拉项的值用于其他所需数据,因此我需要一种方法来获取此相关数据,而无需返回服务器.如果我在正确的轨道上,有人可以发布一个简单的例子来填充js数组,其中sting值作为ViewData中的List返回.

谢谢,

麦克风



1> roryf..:
var myArray = [
<% foreach (string item in ViewData["list"] as List) { %>
"<%= item %>",
<% } %>
];

据报道,最后有一个逗号会在IE中中断,因此我建议使用视图扩展帮助方法来使代码更易于管理:

<%= Html.JavaScriptArray(ViewData["list"] as List, "myArray") %>

把这个帮助方法放在解决方案的某个地方:

public static string JavaScriptArray(this HtmlHelper htmlHelper, IList 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

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有