我在我的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,数组显示在屏幕上,是否有另一种方法!非常感谢您的建议。
答案 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();
}
}