Anoop Jasiwal Ответов: 5

передача arraylist из MVC razor View в javascript


У меня есть список в представлении MVC, и мне нужно передать его в функцию javascript, может ли кто-нибудь мне помочь !!!

Спасибо

5 Ответов

Рейтинг:
2

ErwanLent

Один лайнер:

var data = [@Html.Raw(String.Join(",", Model.MyArray.Select(i => "'" + i + "'")))];


ChessGirl

Это сработало для меня! Как новичок, я должен был понять, что он проходит между тегами скрипта, и я мог использовать его, чтобы забрать массив, который я пропустил через ViewBag:

@{int[] graphNumbers = ViewBag.GraphNumbers;}
< script type= "text/javascript">
var graphNumbers = [@Html. Raw (String.Join (",", graphNumbers.Выберите (i => "'" + i +"'")))];
< / script>
Это прекрасно прошло через массив, и мой Chart.js график теперь работает!

Большое спасибо!

Рейтинг:
2

Zoltán Zörgő

Вы можете передавать любые данные из контроллера в представление через viewbag. Просто добавьте файл в viewbag и передайте ему закодированный в json список. В представлении используйте тег script в верхней его части, чтобы присвоить его значение переменной javascript. Вот оно у вас :)


Рейтинг:
2

Anoop Jasiwal

Спасибо за ответ, чтобы добавить к вопросу, я не должен использовать Viewbag или Tempdata, и более того, это не список массивов, это "ToList & lt;componentobservationtype>"
как мне получить эту коллекцию listcollection в функцию javascript


Zoltán Zörgő

Это не решение, это комментарий к моему ответу. Пожалуйста, используйте соответствующие инструменты.
Но:
1) Почему вы не можете использовать viewbag или tempdata?
2) в JavaScript нет такой вещи, как список Есть только массивы и объекты - таким образом, ваш список будет массивом или объектом в javascript, но это безразлично в вашем случае
3) Вы либо визуализируете свою страницу с данными в ней, как я предлагал ранее, либо используете ajax для получения их с сервера во время выполнения. В более позднем случае вы не будете использовать viewbag или tempdata, но hat-это другой сценарий. Это то, что тебя интересует? В таком случае ответ мистера Приянка-это ваш путь.

Рейтинг:
1

new_steven

cshtml:

var listData = JSON.parse('@Html.Raw(HttpUtility.HtmlDecode(ViewBag.ListData))');

CS:
ViewBag.ListData= JsonConvert.SerializeObject(new List<string>() { "ABC", "EFG" });


Рейтинг:
0

mr.priyank

в Java Script напишите это

function GetList()
{
var siteRoute= $("#hdsiteroute").val() ;// in cshtml or aspx have a hidden field with this id and value as Url.Content("~") this will help in live mode
var url=siteRoute+"YourController/GetList"



 $.ajax({ url: url, data: {yourargument:1}, type: "GET", dataType: "json", async: false, cache: false, error: ajaxError, success: function (result) {
  for (var i = 0; i < result.length; i++) {
        alert(result[0]); // access each item like this. if list is of any complex type the use result[0].Name // say name is a proprty of the complex type
    }

 } });

}
function ajaxError(jqXHR, textStatus, errorThrown) {
   // CATCH ERROR HERE
}


а в контроллере есть

public ActionResult GetList(int yourargument)
       {
           List<int> MyList = new List<int>(); //LIST CAN BE OF ANY COMPLEX DATATYPE
           MyList.Add(1);
           return Json(MyList, JsonRequestBehavior.AllowGet);
       }