在 C# 中访问 SelectList 中对象的属性

Accessing properties of object in SelectList in C#

我是这里的新手。我正在尝试创建一个下拉列表 (SelectList),它会在我的 ASP.NET MVC 应用程序中显示商店的位置。

Shop class 有一个 Location 属性 而后者又有一个 Name 属性:

public class Shop
{
    public int Id { get; set; }
    public Location Location { get; set; }
}

public class Location
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Name属性是一个字符串。

我尝试使用此代码:

var shops = _applicationDbContext.Shops
                                 .Include(x => x.Location).ToList();

var mwc = new Create
              {
                   ShopSL = new SelectList(shops, nameof(Shop.Id), nameof(Shop.Location.Name)) 
              };

但是我得到一个错误:

Object reference not set to an instance of an object

如果我删除 Shop.Location.Name 并将其更改为仅 Shop.Location,则下拉列表会显示该对象,例如 Namespace.Data.Location.

我希望下拉列表能够显示位置的名称。

有人能给我指出正确的方向吗?谢谢。

试试这个

var shops = _applicationDbContext.Shops
                    .Select (i=> new 
                    {
                     Id=i.Id
                     Name=i.Location.Name
                     }).ToList();

var mwc = new Create
              {
                   ShopSL = new SelectList(shops,"Id","Name") ;
              };