从控制器获取两个对象列表,以便使用 JSON 和 JavaScript 查看

本文关键字:JSON 查看 JavaScript 列表 获取 控制器 对象 两个 | 更新日期: 2023-09-27 18:35:36

>我在视图中有下拉列表,当更改时我需要通过javascript代码调用控制器中的方法,此方法必须使用JsonResult返回两个对象列表,并在JavaScript的视图中处理结果。

以下是我的观点:

Files:
    @Html.DropDownList("File", Enumerable.Empty<SelectListItem>())
<table id="trTable" class="table table-condensed table-hover table-bordered">
</table>

JavaScript 代码:

<script type="text/javascript">
    $('#File').select2(
            {
                allowClear: true,
                width: 150,
            })
       .on('change', function () {
           var fileId = $('#File').val();
       $.getJSON("/Files/getWords", { fileId: fileId}, function (data) {
           $('#trTable').empty();
           var items = "<table id=" + "'trTable'" + "class=" + "'table table-condensed table-hover table-bordered'" + "'><tbody>";
          // here where I want to deal with two objects lists (Files and Words)
           });
           items += "</tbody></table>";
           $("#trTable").html(items);
       });

以及控制器中的方法:

public JsonResult getWords(int fileId)
        {
           var PWs = db.Words.Where(x=>x.File_Id.Equals(fileId));
           var Files = db.Files.toList(); 
           // here where I want to pass the two lists (PWs and Files).
           //return Json(files, JsonRequestBehavior.AllowGet);
        }

那么如何解决这个问题呢?我需要你的帮助

从控制器获取两个对象列表,以便使用 JSON 和 JavaScript 查看

你可以返回组合对象:

var result=new { PWs=PWs, Files=Files};
return Json(result, JsonRequestBehavior.AllowGet);

这是解决方案,控制器的代码如下:

 Class ClassDetails = db.Classes.Find(clasId);
 // finding the branch of the student for registration and other fees
 int branchId = db.Students.Where(z => z.StudentID == id).Select(z => z.BranchID).FirstOrDefault();
 BranchSetting branchSettings = db.BranchSettings.Where(z => z.BranchID == branchId).FirstOrDefault();
 return Json(new { ClassDetails,branchSettings}, JsonRequestBehavior.AllowGet);

这是jquery成功回调的代码

 success:
        function (result) {
            console.log(result);
            var classDetails = result.ClassDetails;
            var branchFee = result.branchSettings;
            if (classDetails == null || branchFee == null) {
                $("#txtMsg").html("Please contact admin.");
                $("#txtMsg").show();
                $("#Things").hide();
                $("#myModal").modal('show');
            }
            else {
                $("#txtClassName").html(classDetails.ClassName);
                $("#txtTutionFee").html(classDetails.TutionFee);
                $("#txtComputerFee").html(classDetails.ComputerFee);
                $("#txtTotalMonthlyFee").html(classDetails.TotalFee);
                $("#txtRegistrationFee").html(branchFee.RegistrationFee);
                $("#txtAddmissionFee").html(branchFee.AddmissionFee);
                $("#txtSecurityFee").html(branchFee.SecurityFee);
                $("#myModal").modal('show');
            }
        },