ViewData列表中的JavaScript数组 - Razor

时间:2014-12-11 22:28:16

标签: javascript c# asp.net-mvc razor response.write

我在我的MVC3(aspx)中使用以下内容从ViewData生成一个包含列表的数组:

<script runat="server">
      void RenderJavascriptHashArray (string listName, string hashName)
            {
            IEnumerable<KeyValuePair<int, string>> pairs = this.ViewData[listName] as IEnumerable<KeyValuePair<int, string>>;

            Response.Write("var " + hashName + " = new Array();\n");
            foreach (KeyValuePair<int, string> pair in pairs)
                {
                Response.Write(hashName + "[" + pair.Key.ToString() + "] = \"" + pair.Value + "\";\n");
                }
            }
</script>

<script>
   <% this.RenderJavascriptHashArray("InfoURLs", "InfoURLs"); %>
</script>

在MVC5 Razor中,由于Response.Write,数组显示在屏幕上,是否有另一种方法!非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

尝试这个我认为如果你是剃须刀你不需要回应。

@Html.Raw(RenderJavascriptHashArray("InfoURLs", "InfoURLs"))
@{
            string RenderJavascriptHashArray (string listName, string hashName)
            {

              IEnumerable<KeyValuePair<int, string>> pairs = this.ViewData[listName] as IEnumerable<KeyValuePair<int, string>>;
                  System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
                  sb.Append("var " + hashName + " = new Array();\n");
               foreach (KeyValuePair<int, string> pair in pairs)
                {
                sb.Append(hashName + "[" + pair.Key.ToString() + "] = \"" + pair.Value + "\";\n");
                }
                return sb.ToString();
            }
}
相关问题