Javascript 是否可以使用ASP.NET MVC4中的一个控制器函数在视图中返回两个数组?
这个问题实际上是在继续/扩展我的问题 我有一个模型SchoolTestSubmodulePerstudent,它实际上如下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
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
非常感谢你的朋友。你帮了我很多。我对你的答案投了赞成票,并把它选为最佳答案。再次感谢:)