显示另一个控制器的局部视图[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了显示另一个控制器的局部视图[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我试图生成一个部分视图,允许我在主页(索引)上显示最近的上下文。但是,模型仅返回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());
}

局部视图(Podcasts / _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>

主视图(Home / Index.cshtml)

@Html.Partial("~/Views/Podcasts/_RecentPodcasts.cshtml");
答案

按照惯例,@await Html.PartialAsync("_RecentPodcasts")剃刀知道如何找到它。现在,为了传递数据,你需要有某种方法来实际获取数据吗?

public async Task<IActionResult> _RecentPodcasts()殴打应该用于命名该方法(提示下降_)。实际上惊讶编译器没有抱怨。

Home / 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 )

应该只是覆盖它...其余的空白和...将在你的.net核心/ mvc之旅中发现

以上是关于显示另一个控制器的局部视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 从另一个视图控制器返回时重复单元格

从另一个片段的其他视图控制片段的视图

从另一个局部视图渲染局部视图

从另一个片段返回时如何在视图页面中显示片段?

回收站视图未显示在片段中

如何将列表视图中的数据从一个片段发送到另一个片段