Razor MVC 모델 배열로 자바 스크립트 배열 채우기
내 모델의 배열로 JavaScript 배열을로드하려고합니다. 이것이 가능해야 할 것 같습니다.
아래 방법 중 어느 것도 작동하지 않습니다.
JavaScript 루프를 만들고 JavaScript 변수가있는 모델 배열을 통해 증가 할 수 없습니다.
for(var j=0; j<255; j++)
{
jsArray = (@(Model.data[j])));
}
Razor 루프를 만들 수 없습니다. 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 구문과 거의 같습니다 . 따라서 간결함과 속도면에서 자신의 대답이 최선의 방법입니다.
내 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 # 배열과 자바 스크립트 배열의 동일한 상황을 가지고있었습니다. @ heymega 의이 솔루션은 내 자바 스크립트 파서가 루프 에서 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());
그리고 자바 스크립트 코드는
var imagesArray = new Array(@Html.Raw(bannerImages));
도움이되기를 바랍니다.
List<Alert>
C #에서 토스트 (경고 메시지) 목록으로 작업 중이 었고 부분보기 ( .cshtml
파일) 에서 Toastr의 JavaScript 배열로 필요했습니다 . 아래 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);
});
To expand on the top-voted answer, for reference, if the you want to add more complex items to the array:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
etc.
Furthermore, if you want to pass the array as a parameter to your controller, you can stringify it first:
myArray = JSON.stringify({ 'myArray': myArray });
If it is a symmetrical (rectangular) array then Try pushing into a single dimension javascript array; use razor to determine the array structure; and then transform into a 2 dimensional array.
// this just sticks them all in a one dimension array of rows * cols
var myArray = new Array();
@foreach (var d in Model.ResultArray)
{
@:myArray.push("@d");
}
var MyA = new Array();
var rows = @Model.ResultArray.GetLength(0);
var cols = @Model.ResultArray.GetLength(1);
// now convert the single dimension array to 2 dimensions
var NewRow;
var myArrayPointer = 0;
for (rr = 0; rr < rows; rr++)
{
NewRow = new Array();
for ( cc = 0; cc < cols; cc++)
{
NewRow.push(myArray[myArrayPointer]);
myArrayPointer++;
}
MyA.push(NewRow);
}
This would be better approach as I have implemented :)
@model ObjectUser
@using System.Web.Script.Serialization
@{
var javaScriptSearilizer = new JavaScriptSerializer();
var searializedObject = javaScriptSearilizer.Serialize(Model);
}
<script>
var searializedObject = @Html.Raw(searializedObject )
console.log(searializedObject);
alert(searializedObject);
</script>
Hope this will help you to prevent you from iterating model ( happy coding )
참고URL : https://stackoverflow.com/questions/23781034/razor-mvc-populating-javascript-array-with-model-array
'Programing' 카테고리의 다른 글
Mac에서 .c 파일을 어떻게 컴파일합니까? (0) | 2020.09.16 |
---|---|
`set -u`로 빈 배열 확장을 배시 (0) | 2020.09.16 |
Visual Studio 2017-파일 또는 어셈블리 'System.Runtime, Version = 4.1.0.0'또는 해당 종속성 중 하나를로드 할 수 없습니다. (0) | 2020.09.15 |
Gradle을 사용할 때 전이 종속성의 모든 인스턴스를 제외하려면 어떻게해야합니까? (0) | 2020.09.15 |
Visual Studio 2017에서 노드 버전 업데이트 (0) | 2020.09.15 |