2017-12-22 42 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 당신이 그것을 짐작 ... 유형의 속성이하는 뷰 모델을해야합니다 .. 막 그것을 커버해야한다 "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) 

...의 나머지를 blanks and ... 당신이 .net 코어/mvc 여행에서 발견 할 수 있습니다.

+0

이것은 올바른 방향으로 나를 설정합니다. 고맙습니다! –