【问题标题】:Is it possible to return two arrays at the view using one controller function at ASP.NET MVC4?是否可以在 ASP.NET MVC4 中使用一个控制器函数在视图中返回两个数组?
【发布时间】:2014-02-13 09:56:06
【问题描述】:

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

我的模型 SchoolTestsPerModulePerStudent 实际上如下

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 获取 StudentID 为 2 的 Student 的所有 SchoolTestsPerModulePerStudent 记录。

我现在遇到的问题是,我想将 b 拆分为两个不同的数组,在我看来,我想将它们用作 javascript 中的数组。

所以现在我有两个问题:

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

第二个是我如何能够只使用一个函数返回这两个新数组?可能吗?基本上,我要避免的是查询的第二次执行(延迟),以及如果我执行两个查询来获取每个表的情况,则可能存在元素将是返回的顺序不同,所以两个数组不匹配。

此外,在 javascript 中,在我之前的问题中,我得到了以数组形式返回的答案,它们应该像 @Json.Encode(Model) 一样以 JSON 形式返回。所以我可以在我的情况下使用@Json.Encode(TestDatesArray)@Json.Encode(TestResultsArray)

【问题讨论】:

    标签: javascript asp.net arrays json asp.net-mvc-4


    【解决方案1】:

    吉姆,

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

    型号:

    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 Encoding 就可以了

    @Json.Encode(Model.TestResults)
    @Json.Encode(Model.TestDates)
    

    现在确保您的视图已设置为使用新模型。

    @model SchoolTestResultsModel
    

    【讨论】:

    • 非常感谢朋友。你帮了我很多。我赞成您的答案,并将其选为最佳答案。再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多