将对象转换为模型Mvc

时间:2014-09-02 08:49:11

标签: asp.net-mvc-4 object

我想将查询结果从对象转换为模型,下面提到的是查询我只想在网格中显示测试详细信息,但我使用的网格是剑道

 var data = (from temp in context.Test_Master
                                     join item in context.Test_Settings on temp.Test_Id equals item.Test_Id
                                     join chp in context.lp_Chapter on temp.ChapterId equals chp.ChapterId
                                     join btch in context.BatchDetails on item.BatchId equals btch.BatchId
                                     where
                                        chp.StandardId == stdId
                                        &&
                                        item.BatchId==btchId


                                     select new {item.Test_Master.Test_Id,item.Test_Master.Test_Name,item.Test_Master.Test_Date,item.Start_Time,item.End_Time });

                data = data.OrderBy(x => x.Test_Date);

                var r = new PageList<Object>(data, pageNo, pageSize);
                return r;  

控制器代码

PageList<Object> TestDetails = studBal.testDetails(studentId,command.Page - 1, command.PageSize);
                var gridModel = new DataSourceResult
                {
                    Data = TestDetails.Select(x =>
                    {
                        var Test = new Test();
                        Test.Test_Id = x.Id;
                        Test.Test_Name = x.Name;
                        Test.Test_Date = x.Name;
                        Test.Start_Time = x.StartTime;
                        Test.End_Time = x.EndTime;
                        return Test;
                    }),
                    Total = Test.TotalCount,
                };

我的查询完美执行以及我在PageList TestDetails中得到正确的结果但我想将此对象转换为我的模型即测试以便我可以在网格中显示记录我不知道如何将对象转换为模型任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

将结果选择到模型中

var data = (from temp in context.Test_Master
  ...
  select new Test
  {
    Test_Id = item.Test_Master.Test_Id,
    Test_Name =  item.Test_Master.Test_Name,
    ...  
  };

答案 1 :(得分:1)

如果您的查询返回您的视图正在使用的模型,那么@StephenMuecke答案就是您所需要的。但我更喜欢使用数据访问层可以检索的域模型和视图知道的viewModels

在这种情况下,斯蒂芬的建议只是第一部分。让您的查询按照Stephen的建议返回已定义对象的列表(MyDomainTestModel),然后在控制器中(或者在控制器调用的单独的ModelBuilder类中更好),使用映射工具(我使用AutoMapper)或linq“选择“将MyDomainTestModel列表转换为可以传递给视图的Test列表(它成为您的视图模型)。