C# 在ASP.NET MVC中,如何为相关实体而不是外键属性创建下拉列表?

C# 在ASP.NET MVC中,如何为相关实体而不是外键属性创建下拉列表?,c#,asp.net-mvc,data-binding,drop-down-menu,C#,Asp.net Mvc,Data Binding,Drop Down Menu,假设我有这个模型: public class Category { public long Id { get; set; } public string Name { get; set; } } public class Item { public long Id { get; set; } public string Name { get; set; } //public long CategoryId { get; set; } public

假设我有这个模型:

public class Category {
    public long Id { get; set; }
    public string Name { get; set; }
}

public class Item {
    public long Id { get; set; }
    public string Name { get; set; }
    //public long CategoryId { get; set; }
    public Category Category { get; set; }
}
我想在我的页面上编辑一个项目,我有一个类别列表


我可以轻松创建CategoryId属性的下拉列表。但是我需要映射整个类别实体,而不仅仅是一个外键。有常规的通用方法吗?

没有,因为您无法将选项的
值设置为整个实体,更不用说以modelbinder可以识别的格式将其发回。处理此问题的正确方法是过帐到外键属性,然后保存

如果您的问题是没有外键属性(因为您依赖EF约定根据
类别
属性为自己创建外键),那么最好在视图中使用视图模型,而不是实际实体。在该视图模型中,可以包括
CategoryId
属性,并将其用于下拉列表。然后,在POST操作中收到模型后,使用id查询数据库并检索实际对象。然后将实体上的
类别设置为该对象并保存