【问题标题】:How to display Returned by json linq list into view? [closed]如何将 json linq 列表返回的结果显示到视图中? [关闭]
【发布时间】:2025-12-18 02:50:02
【问题描述】:

如何将 json linq 返回的列表显示到视图中? 我尝试如下,但无法获取列表值。

$("#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);
}

【问题讨论】:

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


    【解决方案1】:

    处理单个结果的通常做法是让一些 div 充当占位符,然后将该 div 的 html 属性设置为来自后端的结果。

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

    【讨论】:

      【解决方案2】:

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

      确保返回正确数量的值

      在您的查询中,您当前以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,您应该考虑使用它的替代 on()

      检查您的路径

      您当前正在使用相对路径,它可能工作得很好,但您可能需要考虑可能以绝对路径为目标。如果您的 Javascript 代码已经在视图中(而不是在外部文件中),您可以使用 Url.Action() 方法来解决此问题:

      $.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);
           }          
      });
      

      【讨论】:

      • by var 它不是来的。现在它是由类类型变量来的。
      • 你能详细说明一下吗?恐怕我不明白你在说什么?你是说你的函数没有返回任何值,或者你的参数没有被填充到你的控制器动作中?
      • 我的函数没有返回值
      • 但现在可以了..通过类类型变量工作得很好。