当前位置:  开发笔记 > 编程语言 > 正文

将数组从MVC传递到javascript?

如何解决《将数组从MVC传递到javascript?》经验,为你挑选了3个好方法。

我可以使用以下命令从MVC ASP.NET传递一个变量:

var lastCategoryId = '<%=Model.CS.LastSelectedCategory %>';

这对字符串或整数很好,但我如何处理字符串数组?我试图以相同的方式传递数组但变量设置为System.String []?



1> 小智..:

您可以通过这一系列简单的代码让.NET为您处理所有繁重的工作.

这假设您使用的是MVC Razor语法.

var yourJavaScriptArray = @Html.Raw(Json.Encode(Model.YourDotNetArray));

对于较新版本的MVC,请使用:

var yourJavaScriptArray = @Html.Raw(Json.Serialize(Model.YourDotNetArray));


请注意,`Json.Encode()`不再适用于较新版本的MVC.请使用`Json.Serialize(Model.YourDotNetArray)`.

2> Darin Dimitr..:

你可以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);
    }
}

然后在你看来:



我不得不承认这比我的回答更清晰.这应该被投票作为解决方案,而不是我的帖子.
@Adrian,一切都是主观的.就个人而言,我讨厌在视图中看到C#.而且我对视图中的循环特别敏感:-)也不编码你输出的字符串是非常危险的,并受到XSS攻击.这就是为什么我更喜欢总是依赖框架中内置的东西,这样我就不必担心正确的转义,......

3> Adrian Grigo..:

这应该做

var someArray=[<%foreach (var s in myStringArray){%>'<%=s%>',<%}%>];

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有