Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用ASP.NET MVC4中的一个控制器函数在视图中返回两个数组?_Javascript_Asp.net_Arrays_Json_Asp.net Mvc 4 - Fatal编程技术网

Javascript 是否可以使用ASP.NET MVC4中的一个控制器函数在视图中返回两个数组?

Javascript 是否可以使用ASP.NET MVC4中的一个控制器函数在视图中返回两个数组?,javascript,asp.net,arrays,json,asp.net-mvc-4,Javascript,Asp.net,Arrays,Json,Asp.net Mvc 4,这个问题实际上是在继续/扩展我的问题 我有一个模型SchoolTestSubmodulePerstudent,它实际上如下 public partial class SchoolTestsPerModulePerStudent { public long StudentID { get; set; } public long ModuleID { get; set; } public System.DateTime TestDate { get; set; } p

这个问题实际上是在继续/扩展我的问题

我有一个模型SchoolTestSubmodulePerstudent,它实际上如下

public partial class SchoolTestsPerModulePerStudent
{
    public long StudentID { get; set; }
    public long ModuleID { get; set; }
    public System.DateTime TestDate { get; set; }
    public int TestResult { get; set; }
}
正如我在上一个问题中提到的,我在控制器的函数中有这个代码

    var query = from b in db.SchoolTestsPerModulePerStudent
                where b.StudentID.Equals(2)
                select b;
        return View(query.ToArray());
好的,现在,b得到了所有的学校测试精子模块的学生记录

我现在遇到的问题是,我想将b拆分为两个不同的数组,我想在我的视图中将其用作javascript中的数组

现在我有两个问题:

是否可以将包含SchoolTestsPerModulePerStudent记录的数组分解为两个不同的数组,以便在视图中返回?更具体地说,我希望第一个只包含TestDate,而第二个只包含TestResult。我找不到任何选项可以用来仅从其他表的列创建数组

第二个问题是如何仅使用一个函数返回这两个新数组?可能吗?基本上,我想要避免的是第二次执行查询(延迟),以及如果我执行两个查询以获取每个表,那么可能会有元素返回顺序不同的情况,因此两个数组将不匹配

此外,在javascript中,在我的上一个问题中,我得到了作为数组返回的答案,它们应该作为JSON返回,就像
@JSON.Encode(Model)
。所以我可以在我的例子中使用
@Json.Encode(TestDatesArray)
@Json.Encode(TestResultsArray)

通过创建另一个模型类,您可以毫无问题地执行此操作,并将查询结果中的数据选择到数组中。现在我假设,正如您所说,您只需要两个属性
TestDate
TestResult
,没有任何其他属性,没有特定的选择顺序

型号:

public partial class SchoolTestResultsModel
{
    public int[] TestResults { get; set; }

    public DateTime[] TestDates { get;set; }
}
var query = from b in db.SchoolTestsPerModulePerStudent
            where b.StudentID.Equals(2)
            select b;

var model = new SchoolTestResultsModel();
model.TestDates = query.Select(x => x.TestDate).ToArray();
model.TestResults = query.Select(x => x.TestResult).ToArray();
return View(model);
调整方法:

public partial class SchoolTestResultsModel
{
    public int[] TestResults { get; set; }

    public DateTime[] TestDates { get;set; }
}
var query = from b in db.SchoolTestsPerModulePerStudent
            where b.StudentID.Equals(2)
            select b;

var model = new SchoolTestResultsModel();
model.TestDates = query.Select(x => x.TestDate).ToArray();
model.TestResults = query.Select(x => x.TestResult).ToArray();
return View(model);
然后您的JSON编码就可以

@Json.Encode(Model.TestResults)
@Json.Encode(Model.TestDates)
现在,请确保已将视图设置为使用新模型

@model SchoolTestResultsModel

非常感谢你的朋友。你帮了我很多。我对你的答案投了赞成票,并把它选为最佳答案。再次感谢:)