[英]Pass Array from MVC to javascript?
我可以使用以下命令从MVC ASP.NET传递一个变量:
var lastCategoryId = '<%=Model.CS.LastSelectedCategory %>';
这对字符串或整数很好,但我如何处理字符串数组? 我试图以相同的方式传递数组但变量设置为System.String []?
您可以通过这一系列简单的代码让.NET为您处理所有繁重的工作。
这假设您使用的是MVC Razor语法。
var yourJavaScriptArray = @Html.Raw(Json.Encode(Model.YourDotNetArray));
对于较新版本的MVC,请使用:
var yourJavaScriptArray = @Html.Raw(Json.Serialize(Model.YourDotNetArray));
你可以JSON序列化它。 这种方式可以传递更复杂的值,而不用担心转义简单的引号,双引号等:
var categoriesList = <%= new JavaScriptSerializer().Serialize(new[] { "value1", "value2" }) %>;
编写HTML帮助程序来做到这一点会更好:
public static class HtmlExtensions
{
public static string JsonSerialize(this HtmlHelper htmlHelper, object value)
{
return new JavaScriptSerializer().Serialize(value);
}
}
然后在你看来:
<script type="text/javascript">
var categoriesList = <%= Html.JsonSerialize(new[] { "value1", "value2" }) %>;
</script>
这应该做
var someArray=[<%foreach (var s in myStringArray){%>'<%=s%>',<%}%>];
这样的事情:
<script type="text/javascript">
var myArr = [<%=string.Join(",", strArr.Select(o => "\"" + o + "\"")) %>];
</script>
一个班轮:
var data = [@Html.Raw(String.Join(",", Model.MyArray.Select(i => "'" + i + "'")))];
如此简单,如此简单
<script type="text/javascript">
var array = @Html.Raw(
Json.Encode(
(Model).Select(m=> new
{
id= m.ID,
name=m.Name
})
)
);
</script>
输出是:
[{"id":1,"name":"Name of 1"}, {"id":2,"name":"Name of 2"}, ...];
您需要将数组格式化为JavaScript数组语法。
var someArray = [<%= Model.SomeArray.Select(x => "'" + x +"'")
.Aggregate((x,y) => x + ", " + y); %>];
这将用单引号括起每个条目,然后用方括号之间的逗号将它们连接在一起。
更新:删除了额外的括号。
使用Json.NET
var yourlist = JSON.parse('@Html.Raw(JsonConvert.SerializeObject(Model.YourList))');
只想使用Razor语法提供答案:
我们有一个Dictionary<int, int>
,我们正在以“数组数组”的形式呈现jQuery Sparkline。
var usageData = [ @string.Join(",", Model.UsageData.Select(d => string.Format("[{0},{1}]", d.Key, d.Value)).ToArray()) ];
使用方式如下:
$('#sparkline').UsageSparkline(usageData, { tooltipFormatter: cachedTooltips });
这是我们查看源代码时得到的:
var usageData = [ [-13,0],[-12,1],[-11,0],[-10,0],[-9,1],[-8,1],[-7,0],[-6,2],[-5,2],[-4,0],[-3,0],[-2,9],[-1,3],[0,4] ];
$('#sparkline').UsageSparkline(usageData, { tooltipFormatter: cachedTooltips });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.