来自 ViewData 列表的 JavaScript 数组 - Razor

本文关键字:数组 Razor JavaScript ViewData 列表 来自 | 更新日期: 2023-09-27 18:33:59

我在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,数组显示在屏幕上,有没有替代方法! 感谢您的建议。

来自 ViewData 列表的 JavaScript 数组 - Razor

试试这个,如果你在剃刀中,我认为你不需要回应。

@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();
            }
}