Как передать объект модели или Viewbag в Javascript?

0

Я использую asp.net mvc4 с С#. Я получаю детали из Getdeatils() студенческого класса. Этот метод возвращает массив. Метод Getdetails также имеет те же поля, что и studentBO. В контроллере у меня есть метод, как следует

   public ActionResult Index()
            {
          List<studentBO> list = new List<studentBO>();
                    Student.GetDetails[] dt = Student.Getdeatils();
                for (int i = 0; i < dt.Length; i++)
                {

                            studentBO.name= dt[i].name;
                            studentBO.studentno= dt[i].studentno;
                            studentBO.address= dt[i].address;
                            list1.Add(studentBO);
                  }    
          ViewBag.Registrationlist = list1;
           return View(list1);
        } 

studentBO объекта studentBO есть 3 поля

public class studentBO
    {      
        public long studentno{ get; set; }
        public string name{ get; set; }
        public string address{ get; set; }
}

How can I get viewbag or model in my Jquery  '$(document).ready(function () {}' function. I want to get every students name. So I have to use foreach loop as well.
Теги:
razor
asp.net-mvc-4

2 ответа

1
Лучший ответ

Вы можете сериализовать свой элемент в ViewBag и записать его в представление, чтобы код Javascript смог его прочитать:

$(document).ready(function() {
    var registrationList = @(Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewBag.Registrationlist)));
    for (var i = 0; i < registrationList.length; i++) {
        var studentno = registrationList[i].studentno;
        var name= registrationList[i].name;
        var address= registrationList[i].address;
        // write some more code to make use of the values
    }
});
  • 0
    Спасибо Стефано Далпиаз. var registrationList это объект, то как получить значения для конкретных полей? Я хочу получить студенчески и имя.
  • 0
    Эта переменная должна быть представлена в виде массива Javascript, поэтому в ней может быть несколько учеников. Я изменил свой ответ, чтобы показать, как получить эти значения.
Показать ещё 2 комментария
1

Используйте WebAPI для создания службы, которая возвращает ваши объекты. Затем вы можете использовать ajax-вызов в вашем Javascript-коде для извлечения объектов.

WebAPI:

public class StudentsController : ApiController
{
    IEnumerable<Student.GetDetails> GetDetails()
    {
        List<studentBO> list = new List<studentBO>();

        Student.GetDetails[] dt = Student.Getdeatils();

        for (int i = 0; i < dt.Length; i++)
        {

            studentBO.name= dt[i].name;
            studentBO.studentno= dt[i].studentno;
            studentBO.address= dt[i].address;

            list1.Add(studentBO);
        }   

        return list1; 
    }
}

Javascript:

$(document).ready(function () {
  // Send an AJAX request
  $.getJSON("api/students")
      .done(function (data) {
        // On success, 'data' contains a list of students.
        $.each(data, function (key, item) {
          //Do something with the student object
        });
      });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню