C# MVC网格使用id从另一个表获取值

C# MVC网格使用id从另一个表获取值,c#,asp.net-mvc,telerik,C#,Asp.net Mvc,Telerik,我使用的是Telerik MVC网格,有两个表: public partial class Sleep { public int ID { get; set; } public string PHN { get; set; } public System.DateTime Day { get; set; } public Nullable<int> SleepLevelId { get; set; }

我使用的是Telerik MVC网格,有两个表:

  public partial class Sleep
    {
        public int ID { get; set; }
        public string PHN { get; set; }
        public System.DateTime Day { get; set; }
        public Nullable<int> SleepLevelId { get; set; }
        public Nullable<int> SDuration { get; set; }
        public string Comment { get; set; }
        public virtual SleepLevel SleepLevel { get; set; }
    }

  public partial class SleepLevel
{
    public SleepLevel()
    {
        this.Sleep = new HashSet<Sleep>();
    }

    public int SleepLevelId { get; set; }
    public string TheLevel { get; set; }

    public virtual ICollection<Sleep> Sleep { get; set; }
}

非常感谢您的建议。

睡眠课程中没有压力级别类型的属性。因此,我将尽可能地处理错误消息

错误

无法获取未定义或空引用的属性“TheLevel”

是因为这条线 columns.Boundo=>o.SleepLevel.TheLevel.Width70


正在尝试访问SleepLevel类的一个名为Level的属性,该属性在您的Sleep类中很可能不存在。

能否显示SleepLevel的定义?SleepLevel的定义是什么意思?thanksI是指SleepLevel的类定义,用作Sleep类中的第七个属性,并根据您的网格调用列。Boundo=>o.SleepLevel.TheLevel.Width70;除非您在两个调用中都有错误并且打算使用StressLevel,否则它是在public enum StressLevel中定义的。我使用的是EF 6.1。好的,那么你必须共享你在视图上使用的网格绑定代码。你能为这里使用的GridModel添加类吗?返回Viewnew GridModel{Data=GePB};不管最后的评论,我误按了回车键。我不确定你的网格是否正确绑定到睡眠类。从中,看起来可以简化控制器中的代码。请尝试这样的操作:[GridAction]public ActionResult _AjaxBinding{return Viewnew GridModelGePB;}是否可以共享视图中使用的网格绑定代码?请尝试确保网格使用控制器中定义的方法。现在,控制器有一个名为_AjaxBinding的方法,但是网格正在寻找方法_SelectAjaxEditing。
private IEnumerable<Sleep> GePB ()
            {
             ....
            var sleep = db.Sleep.Include(s => s.SleepLevel).Where(d => d.PHN == phn && d.Day <= toDate);     
            return sleep;
            }
        [GridAction]
        public ActionResult _AjaxBinding ()
            {
            return View(new GridModel<Sleep>   {  Data = GePB()  });
            }
 @(Html.Telerik().Grid<Sleep>()
                  .Name("Grid")
                  .DataKeys(keys => keys.Add(p => p.ID))
                  .ToolBar(commands => commands.Insert().ButtonType(GridButtonType.ImageAndText).ImageHtmlAttributes(new
                  {
                      style = "margin-left:0;"
                  }))
                  .DataBinding(dataBinding => dataBinding.Ajax()
                      .Select("_SelectAjaxEditing", "Sleep")
                              .Insert("_InsertAjaxEditing", "Sleep")
                              .Update("_SaveAjaxEditing", "Sleep")
                              .Delete("_DeleteAjaxEditing", "Sleep"))
                  .Columns(columns =>
                  {
                      columns.Bound(p => p.Day).Width(70).Format("{0:d}");
                      columns.Bound(o => o.SleepLevel.TheLevel).Width(70);
        columns.Bound(o => o.SDuration).Width(70);
        columns.Command(commands =>
        {
        commands.Edit().ButtonType(GridButtonType.Image);
        commands.Delete().ButtonType(GridButtonType.Image);
        }).Width(50).Title("Edit");
        })
        .Editable(editing => editing.Mode(GridEditMode.InLine))
        .Pageable()
        .Scrollable()
        .Sortable().Filterable()
        )
Unable to get property 'TheLevel' of undefined or null reference