ASP.NET MVC:将查询数据传输到控制器中的模型 class 对象

ASP.NET MVC : transfering query data to model class object in controller

我有一个连接查询

  var DetailsQuery = (from a in db.aTable
                                 join b in db.bTable on a.carID equals b.ID
                                 where a.ID==id
                                    select new
                                 {
                                     ID = a.ID != null ? a.ID : 0,
                                     aName= a.aName,
                                     carName= b.carName,
                                 }).Take(1);

我使用 Take(1) 是否正确?实际上任何方法都必须只有一行具有这样的 ID,所以我应该写这个 Take(1) 还是没有它就可以工作?

现在,我为视图创建了一个新模型class

public class ModifiedaTableModel
{
        [Key]
        [Required(ErrorMessage = "aIDis required.")]
        public int aID{ get; set; }
        [Required(ErrorMessage = "aName required.")]
        public string aName{ get; set; }
        [Required(ErrorMessage = "carName required.")]
        public string carName{ get; set; }
}

如何将此查询对象传输到此模型,以便在视图中显示它?

  var DetailsQuery = (from a in db.aTable
                                 join b in db.bTable on a.carID equals b.ID
                                 where a.ID==id
                                    select new
                                 {
                                     ID = a.ID != null ? a.ID : 0,
                                     aName= a.aName,
                                     carName= b.carName,
                                 }).FirstOrDefault();

在视图中使用视图模型:

@model <your project name>.ViewModels.ModifiedaTableModel;

假设您的视图模型 class 在 "ViewModels" 文件夹中。

控制器:

var DetailsQuery = from a in db.aTable
                   join b in db.bTable on a.carID equals b.ID
                   where a.ID == id
                   select new ModifiedaTableModel
                   {
                       ID = a.ID != null 
                            ? a.ID 
                            : 0,
                       aName = a.aName,
                       carName = b.carName
                   });

return View(DetailsQuery.FirstOrDefault());

视图(可能需要模型的命名空间):

@model ModifiedaTableModel

如果您 select 只有匿名类型对象,在视图渲染期间可能会发生 InvalidOperationException。