在控制器代码中填充选择列表时出现问题 - C# MVC



我有一个相当直接的要求 - 填充一个视图模型,该模型将 SelectList 作为其属性之一 - NewOccs 在模型上定义为:

   public class RatesList
   {
    [Key]
    public long TypeID { get; set; }
    public string TypeName { get; set; }
    public int TypeCount { get; set; }
    public IEnumerable<SelectListItem> NewOccs { get; set; }
   }

我的控制器代码来填充它是:

   var rooms = dbt.Rooms.Where(r => r.hotel_id == AccID)
               .GroupBy(p => p.RoomTypes).Select(g => new RatesList
                {
                    TypeName = g.Key.type_name,
                    TypeCount = g.Count(),
                    NewOccs = dbt.Rates.Where(rt => rt.type_id == g.Key.type_id).GroupBy(rt => rt.occ).AsEnumerable()
                       .Select(proj => new SelectListItem
                       {
                           Text = proj.Key,
                           Value =proj.Key
                       })
                }).ToList();

它应该从中获取信息的费率表是:

public class Rates
{
    public int id { get; set; }
    public long type_id { get; set; }
    public DateTime ratedate { get; set; }
    public decimal rate { get; set; }
    public string occ { get; set; }
}

如何访问费率表中的任何其他字段 - 当我填充选择列表时? 例如,在VSExpressIDE中,智能感知只允许我键入proj.Key - 其他属性不存在。 我希望occ是键/值,我希望文本是occrate的串联 - 即:

Text = proj.occ + ' ' + rate.ToString() 

。但是rateocc在智能感知中找不到。

谢谢你,马克

如果单步执行调试器,您将看到GroupBy()提供了一个包含密钥的GroupedEnumerable。 键Lookup<string, Rates>,因为您在字符串上使用 GroupBy。

如果您将"选择"更改为"精选",则会看到所有费率。 但这会破坏GroupBy的目的。 我不完全确定你最后想要什么,但这里有一个很好的指南来 GroupBy

像这样:

public class Client
{
    public int SelectedSexId { get; set; }
    public IList<Sex> SexList { get; set; }
    public IList<SelectListItem> SexListSelectListItems
    {
        get
        {
            SexList=SexList??new List<Sex>();
            var list = (from item in SexList
                        select new SelectListItem()
                        {
                            Text = item.Name,
                            Value = item.Id.ToString(CultureInfo.InvariantCulture)
                        }).ToList();
            return list;
        }
        set { }
    }
}

相关内容

  • 没有找到相关文章

最新更新