微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用实体框架填充下拉列表

如何解决使用实体框架填充下拉列表

我有下表bookAssignment

ID   Group   OFFICE  name  FKOffice     FKGroup
---------------------------
1    Test1      X   West     1          1
2    Test3      Y   north    2          2
3    Test1      Z   South    3          1
4    Test1      P   South    4          1

此表中大约有3000行,其中ID是唯一的主键。 GROUP和Office具有很多重复价值。

我还有另一个Office和Group表

tblOffice

OfficeID    OfficeName
1            X
2            Y
3            Z
4            P

tblGroup

GroupID     GroupName
1            Test1
2            Test3
3            Test6

BookAssignment表与tblGroup和tblOffice之间存在关系。 FKOffice和FKGroup是BookAssignment表中的外键。

我有以下模型类:

 public partial class bookAssignment_new
{
    public int ID { get; set; }
    public Nullable<int> Book { get; set; }
    public string TechName { get; set; }
    public string Office { get; set; }
    public IEnumerable<SelectListItem> OfficeList { get; set; }
    public IEnumerable<SelectListItem> GroupList { get; set; }
    public virtual GroupName GroupName { get; set; }
    public virtual OfficeName OfficeName { get; set; }
}

我的GroupName模型如下:

public partial class GroupName
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2214:DoNotCalloverridableMethodsInConstructors")]
    public GroupName()
    {
        this.bookAssignment_new = new HashSet<bookAssignment_new>();
    }

    public int GroupID { get; set; }
    public string Groups { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<bookAssignment_new> bookAssignment_new { get; set; }
}

我的OfficeName模型如下:

public partial class OfficeName
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2214:DoNotCalloverridableMethodsInConstructors")]
        public OfficeName()
        {
            this.bookAssignment_new = new HashSet<bookAssignment_new>();
        }
    
        public int OfficeID { get; set; }
        public string Office { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<bookAssignment_new> bookAssignment_new { get; set; }
    }

我想在Office和组中填充两个下拉菜单

下面是我的控制器代码

  public ActionResult Index()
    {
        
        return View();
    }

如何在我的视图中使“组和办公室”下拉列表并用“组和办公室”下拉值填充它。下面是我的结构:

enter image description here

谢谢。

解决方法

这里您犯了两个大错误。 首先,您只是在模型类上创建实例实例,即bookAssignment_new。您需要填充它。

第二个是您正在对字符串.WHERE()应用LINQ。更改组和Office以列出以应用任何LINQ。

,

首先,不要将OfficeListGroupList放入模型中。而是将其分配给ViewData

第二,bookassignment_new是一个表示单个对象的类。您可能有某种填充这些列表的方法。您可以通过使用Distinct()函数运行LINQ查询来从该列表中获取值。

所以-您在控制器中的模型不正确。这就是为什么您会遇到错误。首先解决该问题-并修复下拉菜单会容易得多

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。