Dii*_*iin 2 c# partial-views asp.net-mvc-3
还在学习MVC3,EF.目前我正在连接到MySql,但我认为这不相关.为简单起见,我决定为我的测试应用程序使用一个数据库,并且我已经包含了一个区分数据的类别.例如,我有新闻,事件,信息和页面类别.现在,当在视图中列出内容时,例如在主页上,我想列出最新的5个新闻项目(新闻类别),最新的5个事件(事件类别),欢迎文本(信息类别).我已经能够创建partialViews列出这些在主页的不同部分.但我觉得这样做是错误的,因为在每个PartialViews中,我一遍又一遍地查询同一个表,只是where cat=....
在LINQ查询中进行过滤.您能否确认这是否应该是实践,或者有更好的方法来做到这一点.
您可以执行以下操作:
控制器:
public ActionResult Home()
{
IEnumerable<MyDateRecords> myData = LinqQueryToGetAllTheDataUnFiltered();
ViewData.Model = new MyViewData { MyData = myData; }
return View();
}
Run Code Online (Sandbox Code Playgroud)
ViewModel类:
public class MyViewData
{
List<MyDataRecords> MyData { get; set; }
List<MyDataRecords> News { get { return MyData.Where(m => m.Category = "News"); } }
List<MyDataRecords> Events { get { return MyData.Where(m => m.Category = "Events"); } }
}
Run Code Online (Sandbox Code Playgroud)
视图:
@model MyViewModel
@Html.Partial("NewsPartial", Model.News)
@Html.Partial("EventsPartial", Model.Events)
Run Code Online (Sandbox Code Playgroud)
部分:
@model IEnumerable<MyDataRecord>
Run Code Online (Sandbox Code Playgroud)
这样我们只查询一次数据,只是将一个不同的集合传递给每个部分