Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要如何从Viewdata列表填充javascript数组的简单示例吗_Javascript_Asp.net Mvc_Arrays_Viewdata - Fatal编程技术网

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

需要如何从Viewdata列表填充javascript数组的简单示例吗,javascript,asp.net-mvc,arrays,viewdata,Javascript,Asp.net Mvc,Arrays,Viewdata,可能有一种更简单的方法,如果有,我洗耳恭听。我的情况是,我在表单上有一个dropdownlist,我成功地用文本和值填充了它。我还需要在客户机上提供来自db表中相同表行的其他相关字符串值,以便当用户从下拉列表中选择时,该相关数据将填充到表单上的文本框中。我只处理4条记录,所以在客户机上存储没有什么大不了的。我考虑将这些数据作为列表通过ViewData传递并加载到javascript数组中。当用户从下拉列表中选择时,我将确定所选索引并从数组中获取所需的相关数据。我已经在为其他所需数据使用下拉项的值

可能有一种更简单的方法,如果有,我洗耳恭听。我的情况是,我在表单上有一个dropdownlist,我成功地用文本和值填充了它。我还需要在客户机上提供来自db表中相同表行的其他相关字符串值,以便当用户从下拉列表中选择时,该相关数据将填充到表单上的文本框中。我只处理4条记录,所以在客户机上存储没有什么大不了的。我考虑将这些数据作为列表通过ViewData传递并加载到javascript数组中。当用户从下拉列表中选择时,我将确定所选索引并从数组中获取所需的相关数据。我已经在为其他所需数据使用下拉项的值,因此我需要一种方法来获取此相关数据,而无需返回服务器。如果我的思路正确,有人可以发布一个简单的例子,用ViewData中作为列表返回的sting值填充js数组

谢谢

Mike

var myArray=[
"",
];
据报道,在末尾加逗号会破坏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();
}
公共静态字符串JavaScriptArray(此HtmlHelper HtmlHelper、IList值、字符串varName){
StringBuilder sb=新StringBuilder(“var”);
某人附加(varName);
某人附加(“=[”);
for(int i=0;i
从技术上讲,扩展方法可以放在任何地方,您只需要在.aspx文件中包含名称空间。实际上,最好将它们保存在逻辑上分开的类中,例如
MyApp.Mvc.Extensions.JavaScriptExtensions
MyApp.Mvc.Extensions.LinkExtensions

那么

<%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["list"]) %>


谢谢-这看起来是我需要的。在我的解决方案中,helper方法具体应该放在哪里?从技术上讲,它可以放在任何地方,您只需要在.aspx文件中包含名称空间。实际上,最好将它们保存在逻辑上分开的类中,例如MyApp.Mvc.Extensions.JavaScriptExtensions、MyApp.Mvc.Extensions.LinkExtensions。像这样的想法,只是它不会输出“var myArray=”,但可以很容易地与我的Html扩展助手组合。是的,这不是一个完整的示例,我想你可以填补空白
<%= new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["list"]) %>