【发布时间】:2015-02-05 09:10:15
【问题描述】:
首先请确保stackoverflow上的解决方案都没有解决我的问题(可能是由Entity Framework 6引起的)。我有 3 个实体:学生、城市和地区,如下所示:
实体:
public class Student
{
public int ID { get; set; }
public string Course { get; set; }
public int CityID { get; set; }
public virtual City City { get; set; }
}
public class City
{
public int ID { get; set; }
public string Name { get; set; }
public int RegionID { get; set; }
public virtual Region Region { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
public class Region
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<City> Cities { get; set; }
}
控制器:
public ActionResult Index_Read([DataSourceRequest] DataSourceRequest request)
{
var dataContext = repository.Students;
var students = dataContext.ToDataSourceResult(request, m => new
{
ID = m.ID,
Course = m.Course,
City = m.City.Name, //I can get City name and show it in View.
MyRegionName = m.City.Region.Name //I can get region name and assign it to
//"MyRegionName" parameter in JSON. However in View I cannot get it using "MyRegionName" paremeter
});
return Json(students, JsonRequestBehavior.AllowGet);
}
查看:
@model IEnumerable<Student>
@(Html.Kendo().Grid<Student>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(m => m.ID);
columns.Bound(m => m.Course);
columns.Bound(m => m.City);
columns.Bound(m => m.MyRegionName);
})
.Pageable()
.Sortable()
.Filterable()
.Scrollable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Index_Read", "Student"))
)
)
这里是可能导致Controller和View出现问题的点:
City = m.City.Name, //I can get City name and show it in View.
MyRegionName = m.City.Region.Name //I can get region name and assign it to the "MyRegionName" parameter in JSON. However in View I cannot get it using "MyRegionName" paremeter.
可能与Student实体中有City参数有关。但是City 实体中没有MyRegionName 属性。
【问题讨论】:
-
对不起,如果这是一个愚蠢的问题,但在您的控制器中,您返回
multipliers,我在示波器上找不到它,而您对students无能为力。为什么? -
抱歉,为了简化起见,我更新了名称。现在好了,我更新为学生。请再看一遍好吗?提前谢谢..
-
ToDataSourceResult是什么?你能发布它的代码吗? -
ToDataSourceResult 方法使用 DataSourceRequest 参数和 LINQ 表达式对数据进行分页、排序、过滤和分组。 action 方法的 JSON 响应将只包含一页数据。网格将绑定到该数据。如果您的数据是由启用 LINQ 的提供程序(实体框架、LINQ to SQL、Telerik OpenAccess、NHibernate 或其他)返回的 IQueryable
,则由 ToDataSourceResult 方法创建的 LINQ 表达式将转换为 SQL 并由数据库服务器执行。更多信息:docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/ajax-binding -
@DontVoteMeDown 请回复?谢谢...
标签: asp.net-mvc linq lambda kendo-ui entity