2014-12-11 1 views
0

Я использовал следующие в моей MVC3 (ASPX), чтобы сформировать массив из ViewData, который содержит список:JavaScript массив из списка 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 массив отображается на экране, потому что of Response.Write, есть альтернативный подход! По достоинству оценят ваши предложения.

ответ

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

спасибо. Я получаю сообщение об ошибке «Не удается разрешить Raw (Void) – hncl

+0

Извините, см. Обновление –

+0

Спасибо. Использование Html.Raw печатает массив на экране. При отладке я могу увидеть массив. Однако, если попытаться получить к нему доступ из другой функции JavaScript, например alert (InfoURls [1]), я получаю InfoURLs не определен! – hncl