C# MVC网格使用id从另一个表获取值
我使用的是Telerik MVC网格,有两个表: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; }
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