将List <objects>传递给jQuery函数</objects>

时间:2011-02-02 09:27:22

标签: jquery asp.net-mvc

我想将List传递给我在asp.net mvc应用程序中的jquery函数,并想在jquery函数中进行itterate。我必须做什么。

编辑:在此处添加了我的代码

脚本:

 $.getJSON('/LoadTest/GetAllQuestionsForTest', function(data) {
            $.each(data, function() {

                    alert("hi");
                });
            });

控制器:

[AcceptVerbs(HttpVerbs.Get)]
        public JsonResult GetAllQuestionsForTest()
        {
            int testId = 1;
            int id = Convert.ToInt32(testId);
            List<Question> questionList;

            questionList = questionManager.GetquestionsByTestId(id);
            return Json(questionList,JsonRequestBehavior.AllowGet);
        }

5 个答案:

答案 0 :(得分:1)

您可以将列表序列化为JSON对象,然后遍历它:

<script type="text/javascript">
    var list = <%= new JavaScriptSerializer().Serialize(Model.YourList) %>;
    $.each(list, function(index, element) {
        // TODO: Do something with the element.
    });
</script>

另一种可能性是在AJAX请求中获取此列表:

<script type="text/javascript">
    $.getJSON('<%= Url.Action("GetMyList") %>', function(result) {
        $.each(result, function(index, element) {
            // TODO: Do something with the element.
        });
    });
</script>

答案 1 :(得分:0)

您可以从MVC操作返回JsonResult。

List<MyObject> myList = /* get the data */

return Json(myList);

这假设您的对象将很好地序列化而没有任何复杂性。如果对象很复杂,您可能希望使用JavaScriptSerializer自行序列化并返回内容操作结果。

您可能希望查看的另一个序列化程序是json.net

答案 2 :(得分:0)

jQuery最终是Javascript,它无法理解CLR类型,因此可以将很多格式应用于您的数据(手头的对象),比如将它们序列化为JSON,以便客户端的jQuery可以理解它。

对于JSON,HERE是这个非常有用的网站,可以验证您的JSON表示法,以确保它有效并正确表示。

答案 3 :(得分:0)

在你的MVC应用程序中,你可以得到一个JsonResult:

public JsonResult MyAction()
{
    var myList = GetMyList();
    return Json(myList);
}

然后在jQuery中,您可以将控制器作为AJAX请求调用并迭代它们:

$.getJSON('/Controller/MyAction',function(data){
   $.each(data, function(){
        console.log(this);
   });
});

示例:http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/

答案 4 :(得分:0)

您可以从动作方法返回JsonResult,如:

return new JsonResult{Data= lstObjects}; // lstObjects is the collection/list of objects.

然后迭代你可以获得$.each(...)函数或noraml for{}..循环的帮助。但$ .each(...)将为您提供比大型集合更好的性能。