2011-01-20 24 views
1

這篇文章是關於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中的類有關,或者我需要創建antother類,或者在@model IEnumerable中記住我也有Helper.cs文件?mvc 3 musicstore - storemanagercontroller - 分頁

輸出應該是...

藝術家 - 對於那些關於搖滾,我們向您致敬

標題 - 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 - >查看 - >專輯類的強類型),我已經實現了下面的代碼...

   @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

的問題是,流派和藝術家是實體。你可以這樣創建一個視圖模型:

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> 
+0

感謝您的回覆frennky。我得到的下一個錯誤是「System.NotSupportedException:無法將類型'MvcMusicStore.Models.AlbumViewModel'轉換爲鍵入'MvcMusicStore.Models.AlbumViewModel'.LINQ to Entities只支持投射實體數據模型原語類型。」 ?除非你知道,否則我會通過谷歌進一步觀察。 – DiscoDude 2011-01-20 21:12:21