2011-01-20 10 views
1

この投稿はMSDN Webサイト から自由に入手できるMVC MusicStore、MVC 3に関するものです。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クラスを作成する必要がありますか、多分私はHelper.csファイルも念頭に置いて@モデルのIEnumerableベアリングですか?mvc 3 musicstore - storemanagercontroller - ページ区切り

出力が...

アーティストである必要があります - トゥ・ロックについてそれらのために私たちはあなたの

タイトル敬礼 - AC/DCを

ジャンル - ロック

など

ページ区切りが画面の下部に表示されます 1 2 3 4 5>

しかし、私は出力を取得しています...

アーティスト - MvcMusicStore.Models.Artist

タイトル - トゥ・ロックについてそれらのために私たちはあなたの

ジャンルを敬礼 - MvcMusicStore.Models.Genre

など

は、その後改ページは、画面の下部に示す 1 2 3 4 5>

StoreManagerController構文はCSHTMLで

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

です(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は、キャストエンティティデータモデルのプリミティブタイプのみをサポートしています。 ?私はあなたが知っていない限り、これをさらにgoogleで見ています。 – DiscoDude

+0

それは意味をなさない、これは私のために働く。詳細をご提供ください。 – frennky

+0

エラーは - @ grid.GetHtml( – DiscoDude