【问题标题】:ASP.NET MVC : transfering query data to model class object in controllerASP.NET MVC:将查询数据传输到控制器中的模型类对象
【发布时间】:2018-10-19 06:50:56
【问题描述】:

我有一个带有连接的查询

  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) 还是没有它会工作?

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

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; }
}

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

【问题讨论】:

  • 如果你不确定你是否能得到整个结果,检查它是否不止一个,记录一些错误或其他什么,然后使用.First()

标签: c# asp.net-mvc entity-framework viewmodel


【解决方案1】:
  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;

假设您在“ViewModels”文件夹中有您的视图模型类。

【讨论】:

    【解决方案2】:

    控制器:

    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
    

    如果只选择匿名类型对象,在视图渲染过程中可能会发生 InvalidOperationException。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多