何将模型对象或Viewbag传递给Javascript?

时间:2014-05-09 04:17:16

标签: c# javascript jquery asp.net-mvc-4 razor

我正在使用带有C#的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对象有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.

2 个答案:

答案 0 :(得分:1)

使用Web API创建返回对象的服务。然后,您可以在Javascript代码中使用ajax-call来获取对象。

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

答案 1 :(得分: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
    }
});