Razor MVC使用Model Array填充Javascript数组
我想从我的模型加载一个数组的JavaScript数组。 在我看来,这应该是可能的。
以下两种方式都不起作用。
无法创buildJavaScript循环,并通过带JavaScriptvariables的模型数组增加
for(var j=0; j<255; j++) { jsArray = (@(Model.data[j]))); }
无法创buildRazor循环,JavaScript超出了范围
@foreach(var d in Model.data) { jsArray = d; }
我可以得到它的工作
var jsdata = @Html.Raw(Json.Encode(Model.data));
但我不知道为什么我应该使用JSON。
此刻,我正在限制这个255字节。 将来可能遇到很多MB。
这是可能的,你只需要循环剃刀集合
<script type="text/javascript"> var myArray = []; @foreach (var d in Model.data) { @:myArray.push("@d"); } alert(myArray); </script>
希望这可以帮助
JSON语法几乎是编写对象的JavaScript语法 。 所以,就简洁和速度而言,你自己的答案是最好的select。
在我的KnockoutJS模型中填充下拉列表时,我使用这种方法。 例如
var desktopGrpViewModel = { availableComputeOfferings: ko.observableArray(@Html.Raw(JsonConvert.SerializeObject(ViewBag.ComputeOfferings))), desktopGrpComputeOfferingSelected: ko.observable(), }; ko.applyBindings(desktopGrpViewModel);
…
<select name="ComputeOffering" class="form-control valid" id="ComputeOffering" data-val="true" data-bind="options: availableComputeOffering, optionsText: 'Name', optionsValue: 'Id', value: desktopGrpComputeOfferingSelect, optionsCaption: 'Choose...'"> </select>
请注意,我正在使用Json.NET NuGet包进行序列化,并使用ViewBag传递数据。
我正在整合一个滑块,并需要获取文件夹中的所有文件,并具有相同情况的C#数组到JavaScript数组。这个由@heymega解决scheme完美工作,除了我的JavaScriptparsing器在var
使用foreach
循环恼火。 所以我做了一些避免循环的工作。
var allowedExtensions = new string[] { ".jpg", ".jpeg", ".bmp", ".png", ".gif" }; var bannerImages = string.Join(",", Directory.GetFiles(Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "Images", "banners"), "*.*", SearchOption.TopDirectoryOnly) .Where(d => allowedExtensions.Contains(Path.GetExtension(d).ToLower())) .Select(d => string.Format("'{0}'", Path.GetFileName(d))) .ToArray());
和JavaScript代码是
var imagesArray = new Array(@Html.Raw(bannerImages));
希望能帮助到你
为了进一步扩展最常用的答案,以供参考,如果你想添加更复杂的项目到数组中:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
等等
此外,如果您想将数组作为parameter passing给您的控制器,则可以先将其串行化:
myArray = JSON.stringify({ 'myArray': myArray });
我正在处理来自C#的Toast List<Alert>
(警报消息),并且需要它作为Toastr的 JavaScript数组(在部分视图( .cshtml
文件)中)。 下面的JavaScript代码是为我工作的:
var toasts = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(alerts)); toasts.forEach(function (entry) { var command = entry.AlertStyle; var message = entry.Message; if (command === "danger") { command = "error"; } toastr[command](message); });
- 如何在Razor视图中撰写评论?
- 禁用Razor中的Visual Studio代码格式
- 剃刀:@ Html.Partial()vs @RenderPage()
- 命名约定来区分部分视图和普通视图
- 尝试“System.Web.Mvc.PreApplicationStartCode.Start()”到关键方法“System.Web.WebPages.Razor.PreApplicationStartCode.Start()”失败
- ASP.NET MVC3部分视图命名约定
- Razor视图引擎,如何进入预处理器(#if debug)
- 如何将IEnumerable列表传递给控制器在MVC包括checkbox状态?
- 什么,为什么或什么时候selectcshtml vs aspx更好?