mvc 3 musicstore - storemanagercontroller - 分页

时间:2011-01-20 14:59:23

标签: asp.net-mvc

这篇文章是关于MVC MusicStore,MVC 3,可以从MSDN网站免费获得 我不确定这是cshtml文件还是cs文件中的问题。基本上我正在尝试为StoreManagerController实现分页。我看了http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/,http://weblogs.asp.net/rajbk/archive/2010/05/08/asp-net-mvc-paging-sorting-filtering-using-the-mvccontrib-grid-and-pager.aspxhttp://weblogs.asp.net/shijuvarghese/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta.aspx我没有得到最终结果。有人可以帮助我吗?我认为它与storemanagercontroller中的类有关,或者我需要创建另一个类,或者可能在@model IEnumerable中记住我也有Helper.cs文件?

输出应该是......

艺术家 - 对于那些即将摇滚的人我们向你致敬

标题 - AC / DC

类型 - 摇滚

然后分页显示在屏幕的底部 1 2 3 4 5>

但我得到了一个输出......

艺术家 - MvcMusicStore.Models.Artist

标题 - 对于那些即将摇滚的人我们向你致敬

类型 - MvcMusicStore.Models.Genre

然后分页显示在屏幕的底部 1 2 3 4 5>

StoreManagerController语法为

                        public ActionResult Index() 
                          {
                           var albums = storeDB.Albums
                           .Include("Genre").Include("Artist")
                           .ToList();
                           return View(albums);
                          }

在cshtml(StoreManagerController - > view->强类型的专辑类)中,我实现了以下代码......

              @model IEnumerable<MvcMusicStore.Models.Album>
              @{
                 ViewBag.Title = "Index";
               }
              <h2>Index</h2>
              @Html.ActionLink("Create New", "Create")
              @{        
                 var grid = new WebGrid(source: Model,
                 defaultSort: "Artist",
                 rowsPerPage: 10);
               }

             <div id="grid">
                @grid.GetHtml(
                tableStyle: "grid",
                headerStyle: "head",
                alternatingRowStyle: "alt",
                columns: grid.Columns(
                grid.Column("Artist"),
                grid.Column("Title"),
                grid.Column("Genre")
               )

             ); // ; was missing. 

1 个答案:

答案 0 :(得分:1)

问题在于流派和艺术家是实体。您可以像这样创建一个ViewModel:

public class AlbumViewModel
    {        
        public string Artist { get; set; }
        public string Title { get; set; }
        public string Genre { get; set; }
    }

并将其填充到控制器中,如下所示:

var albums = from a in storeDB.Albums
             select new AlbumViewModel{
                        Artist = a.Artist.Name, 
                        Title = a.Title, 
                        Genre = a.Genre.Name };

并且不要忘记在视图中设置模型类型:

@model IEnumerable<MvcMusicStore.Models.AlbumViewModel>