51 votes

Tableau passe de MVC javascript?

Je peux passer une variable de MVC ASP.NET en utilisant ce :

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

Ce travail très bien avec string ou integer, mais comment puis-je faire avec un tableau de chaînes de caractères? J'ai essayé de passer le tableau de la même façon que la variable est définie pour le Système.String[] ?

160voto

James Mikesell Points 221

Vous pouvez laisser .NET manipuler tout le levage lourd pour vous avec cette simple ligne de code.

Cela suppose que vous êtes en utilisant MVC, Razor syntex.

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

43voto

Darin Dimitrov Points 528142

Vous pourriez JSON sérialiser. On pourrait passer encore plus complexe de valeurs et de ne pas s'inquiéter au sujet d'échapper à de simples guillemets, guillemets, etc :

var categoriesList = <%= new JavaScriptSerializer().Serialize(new[] { "value1", "value2" }) %>;

L'écriture d'un helper HTML pour faire ce serait encore mieux:

public static class HtmlExtensions
{
    public static string JsonSerialize(this HtmlHelper htmlHelper, object value)
    {
        return new JavaScriptSerializer().Serialize(value);
    }
}

et puis, à votre avis:

<script type="text/javascript">
    var categoriesList = <%= Html.JsonSerialize(new[] { "value1", "value2" }) %>;
</script>

15voto

Adrian Grigore Points 15993

Cela devrait le faire

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

3voto

Omu Points 17372

quelque chose comme ceci:

<script type="text/javascript">
var myArr = [<%=string.Join(",", strArr.Select(o => "\"" + o + "\"")) %>];
</script>

2voto

Matthew Manela Points 9610

Vous devez formater le tableau dans un tableau JavaScript syntaxe.

var someArray = [<%= Model.SomeArray.Select(x => "'" + x +"'")
                           .Aggregate((x,y) => x + ", " + y);  %>];

Il sera entouré chaque entrée par des guillemets simples, puis de se joindre à eux avec des virgules entre crochets.

Mise à jour: suppression de parenthèse supplémentaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X