在asp.net mvc中将一个集合分配给另一个集合时启用空值

本文关键字:集合 分配 一个 另一个 空值 启用 mvc net asp | 更新日期: 2023-09-27 18:10:36

我给下面的控制器写了一个集合分配给另一个集合

    public ActionResult Discussion_List() {
        var discussions = (from D in db.AB_Discussion
                           select new
                           {
                           Discussion_ID = D.Discussion_ID,
                           Discussion_Name = D.Discussion_Name,
                           CreatedBy = D.CreatedBy,
                           CreatedDate = D.CreatedDate,
                           UpdatedBy  =  D.UpdatedBy,
                           UpdatedDate =  D.UpdatedDate
                           }).ToList();
        var models = discussions.Select(b => new Discussion_Dashboard()
        {
            Discussion_ID = b.Discussion_ID,
            Discussion_Name = b.Discussion_Name,
            CreatedBy = db.AspNetUsers.Find(b.CreatedBy).UserName,
            CreatedDate = b.CreatedDate,
            UpdatedBy = db.AspNetUsers.Find(b.UpdatedBy).UserName,
            UpdatedDate = b.UpdatedDate
        });
        return View(models);
    }

但是当我在数据库表AB_Discussion中的任何一个上述字段中都有空值时,我得到以下错误

对象引用未设置为对象的实例。

如何避免此错误

这是我的相关模型类

   public partial class Discussion_Dashboard
    {
        public int Discussion_ID { get; set; }
        public string Discussion_Name { get; set; }
        public string Discription { get; set; }
        public string CreatedBy { get; set; }
        public Nullable<System.DateTime> CreatedDate { get; set; }
        public string UpdatedBy { get; set; }
        public Nullable<System.DateTime> UpdatedDate { get; set; }
        public int Views { get; set; }
        public int replys { get; set; }
    }
   public partial class AB_Discussion
    {
        [Key]
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
        public int Discussion_ID { get; set; }
        public string Discussion_Name { get; set; }
        public string Discription { get; set; }
        public string CreatedBy { get; set; }
        public Nullable<System.DateTime> CreatedDate { get; set; }
        public string UpdatedBy { get; set; }
        public Nullable<System.DateTime> UpdatedDate { get; set; }
    }

在asp.net mvc中将一个集合分配给另一个集合时启用空值

我建议使用映射器,例如您可以在GitHub上找到或通过NuGet安装的AutoMapper。AutoMapper帮助您以一种相对简单的方式将一个类映射到另一个类,并为具有相同名称的字段提供合理的默认值,等等。

如果你想允许空值,你可以使用?操作符在变量声明的类型后面,例如:

public int? views { get; set; }

这将给你的变量一个公共只读属性HasValue,你可以使用它来查看你的变量是否包含一个值