2017-12-22 3 views
0

私は、ホームページ(索引)に最近のコンテキストを表示するための部分的なビューを生成しようとしています。ただし、モデルはNULLとして返されます。他のコントローラからの部分表示の表示

ポッドキャストコントローラ方法:

// Generates list of most recent 2 podcasts 
public async Task<IActionResult> _RecentPodcasts() 
{ 
     var recentList = from p in _context.Podcast 
         select p; 
     recentList = recentList.OrderByDescending(p => p.PublishDate).Take(2);    

     return View(await recentList.ToListAsync()); 
} 

パーシャルビュー(ポッドキャスト/ _RecentPodcasts.cshtml)

@model IEnumerable<ComesNaturally.Models.Podcast> 

@{ 
    ViewData["Title"] = "_RecentPodcasts"; 
} 


<div class="col-md-6"> 
<div class="table-title"> 
    <table class="table-fill"> 
     <thead> 
      <tr> 
       <th>Recent Podcasts</th> 
      </tr> 
     </thead> 
@if (Model == null) 
{ 
     <tr> No items found</tr>} 
else 
{ 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td><a asp-action="Details" asp-route-id="@item.ID" class="alert-link">@Html.DisplayFor(modelItem => item.Title)</a></td> 
     </tr> 
    }} 
    </table> 
</div> 
</div> 

メインビュー(ホーム/ Index.cshtml)

@Html.Partial("~/Views/Podcasts/_RecentPodcasts.cshtml"); 
+0

あなたのメインビューのモデルは部分ビューのものと同じですか?もしあなたが 'Partial'ステートメントの部分ビューへのパラメータとしてモデルを渡そうとしていないのであれば? (または表現ですか?) – Gilles

答えて

0

@await Html.PartialAsync("_RecentPodcasts")かみそりを知っていますそれを見つける方法、慣例による。データを渡す場合は、データを実際に取得するための何らかの手段が必要ですか?

public async Task<IActionResult> _RecentPodcasts()このメソッドの命名については、打撃を打ち出してください(ヒントは_です)。実際にはコンパイラは不平を言って驚いた。

ホーム/ Index.cshtmlは、あなたがそれを推測...型のプロパティを持つことになりますのviewmodelを持っています。..ちょうど約それをカバーしなければならない「RecentPodCasts」

//fill it from HomeController... 
public class HomeViewModel(){ 
    public IEnumerable<Podcast> RecentPodcasts {get;set;} 
} 

//HomeController.cs 
public async Task<IActionResult> Index(){ 
    var vm = new HomeViewModel(); 
    vm.RecentPodcasts = await _context.Podcasts.OrderByDescending(p => p.PublishDate).Take(2).ToListAsync(); 

    return View(vm); 
} 


//home/index.cshtml 
@model YourNameSpace.Models.HomeViewModel 


@*somewhere in Home/Index.cshtml*@ 
@await Html.PartialAsync("_RecentPodCasts", Model.RecentPodcasts) 

...の残りの部分をブランクと...あなたのあなたのネットコア/ mvcの旅で発見するためのものです

+0

これは正しい方向に私を設定します。ありがとうございました! –

関連する問題