javascript - mdn - react mvc



Passer du tableau de MVC à javascript? (6)

Cela devrait faire

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

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

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

Cela fonctionne bien avec une chaîne ou un entier, mais comment puis-je faire avec un tableau de chaînes? J'ai essayé de transmettre le tableau de la même manière, mais la variable est définie sur System.String []?


Je voulais juste fournir une réponse en utilisant la syntaxe Razor:

Nous avons un Dictionary<int, int> que nous rendons pour un graphique Sparkline jQuery, sous la forme d'un "tableau de tableaux".

var usageData = [ @string.Join(",", Model.UsageData.Select(d => string.Format("[{0},{1}]", d.Key, d.Value)).ToArray()) ];

Qui est utilisé comme suit:

$('#sparkline').UsageSparkline(usageData, { tooltipFormatter: cachedTooltips });

Voici ce que nous obtenons lorsque nous regardons la source:

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 });

Utiliser Json.NET

var yourlist = JSON.parse('@Html.Raw(JsonConvert.SerializeObject(Model.YourList))');

Vous devez formater le tableau en une syntaxe de tableau JavaScript.

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

Cela entourera chaque entrée de guillemets simples, puis les réunira avec des virgules entre crochets.

Mise à jour: suppression des parenthèses supplémentaires.


Vous pouvez laisser .NET s'occuper de tout le travail lourd avec cette simple ligne de code.

Cela suppose que vous utilisez la syntaxe MVC Razor.

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

Pour les versions plus récentes de MVC, utilisez:

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


quelque chose comme ça:

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




asp.net-mvc