ViewData列表中的JavaScript数组-Razor
我在MVC3 aspx中使用以下命令从包含列表的ViewData生成数组:ViewData列表中的JavaScript数组-Razor,javascript,c#,asp.net-mvc,razor,response.write,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] a
<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中,由于响应,数组显示在屏幕上。Write,是否有其他方法!非常感谢您的建议。试试这个。如果您在剃须刀中,我认为您不需要回复
@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();
}
}
非常感谢。使用Html.Raw在屏幕上打印数组。在调试时,我可以看到阵列。但是,如果尝试从另一个JavaScript函数(例如alertInfoURls[1])访问它,则未定义我获取InfoURLs!