如何显示json linq列表返回视图?

时间:2016-04-12 12:52:36

标签: javascript c# linq model-view-controller

如何显示json linq list返回的视图? 我尝试过如下但不能获得列表值。

$("#Admission_No").live("change", function () {
            var adminssionNo = $(this).val();
            $.getJSON("/../Student_Fee_Allocation/GetStuDetails", { adminssionNo: adminssionNo }, function (list) {

                if (list.length) {
                    alert(list.Registration_Id);
                }          alert(result.Re_Admission_Id);
            });

            //            $.ajax({
            //                type: "GET",
            //                url: "/../Student_Fee_Allocation/GetStuDetails/",
            //                data: { adminssionNo: adminssionNo },
            //                contentType: "application/json;charset=utf-8",
            //                dataType: "json",
            //                success: function (result) {
            //                    debugger;
            //                    alert(result)
            //                },
            //                error: function (response) {
            //                    debugger;
            //                    alert('eror');
            //                }
            //            });

        });

在c#中获取变量中的数据并返回为json。但从观点来看,没有任何回应,意味着没有得到任何价值,甚至警告不起作用。

public JsonResult GetStuDetails(string adminssionNo)//long? compId, long? compLocId, 
{
    var list = 
        (from a in db.Student_Re_Admission
         join b in db.Student_Registration on a.Registration_Id equals b.Registration_Id
         where a.Admission_No == adminssionNo && b.Delete_Flag == false
         orderby a.Re_Admission_Id descending
         select new CUSTOM_STUDENT_FEEALLOCATION_DETAIL
         {
             Registration_Id=a.Registration_Id
         }).First();
    return Json(list, JsonRequestBehavior.AllowGet);
}

2 个答案:

答案 0 :(得分:0)

处理单个结果时通常会让一些div作为占位符,然后将该div的html属性设置为来自后端的结果。

请注意,如果没有数据匹配查询参数,则在linq查询中调用.First()会抛出并出错,最好使用FirstOrDefault()

答案 1 :(得分:0)

我注意到您的代码存在一些问题,我将在下面详细说明:

确保返回适当数量的值

在您的查询中,您当前正在通过First()调用结束调用,这只会返回查询中可用的第一项。如果您尝试返回一组项目,则应考虑使用ToList(),而应返回查询中的所有值:

var list = 
    (from a in db.Student_Re_Admission
     join b in db.Student_Registration on a.Registration_Id equals b.Registration_Id
     where a.Admission_No == adminssionNo && b.Delete_Flag == false
     orderby a.Re_Admission_Id descending
     select new CUSTOM_STUDENT_FEEALLOCATION_DETAIL
     {
         Registration_Id=a.Registration_Id
     }).ToList();

使用live()

jQuery live()函数was deprecated in jQuery 1.7虽然这可能不是问题,如果您使用的jQuery版本小于1.9,您应该考虑使用它的替换{{ {3}}而不是。

检查路径

您当前正在使用相对路径,这可能会正常工作,但您可能需要考虑可能定位到绝对路径。如果您的Javascript代码已在View中(而不在外部文件中),则可以使用on()方法解决此问题:

$.getJSON('@Url("GetStuDetails","Student_Fee_Allocation")', ...); 

或者如果它在外部文件中,您可以将其存储在元素的data-*属性中并引用它:

<div id='Admission_No' data-url='@Url("GetStuDetails","Student_Fee_Allocation")'>
   <!-- Your Content Here -->
</div>

以及:

$.getJSON($(this).data('url'), ...);

考虑使用debugger检查输出

如果您仍然遇到问题,可能需要考虑使用Javascript debugger语句深入了解从AJAX调用返回的内容:

$.getJSON("/../Student_Fee_Allocation/GetStuDetails", { adminssionNo: adminssionNo }, function (list) {
     // Place a debugger here and run this with your Developer Tools (F12)
     // open to see more information on what list looks like
     debugger;
     if (list.length) {
                alert(list.Registration_Id);
     }          
});