如何在MVC 5中获取部分视图以显示数据库Html.Partial中的数据

在我的网站上,我有一个<aside>,我想在其中列出热门新闻。

  • 我创建了一个数据库来存储最新新闻,并使用Entity Framework将其连接到我的项目。这是一个具有ID和Message属性的简单数据库。
  • 我创建了一个局部视图,仅呈现消息,而无法从局部视图进行编辑。它本质上是EF在使用代码优先创建数据库时生成的Index视图的副本。
  • 我正在使用@RenderPage()来渲染<aside>。在<aside>内部,我正在使用@RenderPage()来显示其他信息。

以下是到目前为止我尝试过的一些事情:

  1. 使用@RenderPage()显示邮件列表-失败
  2. 已使用@Html.Partial("_TopNews",Model)-Error: Object reference not set to an instance of an object。 -在页面顶部也声明了@model IEnumerable<Namespace.Models.TopNews>
  3. 使用@Html.RenderPartial尝试了同样的事情-结果相同。
  4. 我在TopNews控制器中创建了一个actionResult(_DisplayTopNews),并在TopNews视图文件夹中创建了一个视图。我使用了@Html.Partial("_DisplayTopNews",Model),但还是没有运气。

以下是从<aside>开始的上述项目的代码:

@model IEnumerable<Namespace.Models.TopNews>


<aside class="sidebar sidebar-primary block-content-area col-md-4 panel-sides">

    <section class="roundBox">
        <div class="wrap">
            <h4 class="block-title">Next Cycle Begins:</h4>
            <div class="margin-top-lg text-left statement margin-sides-xl" aria-label="News and Announcements">
                <div class="statement margin-sides pad-sides">
                    <h3>@RenderPage("~/Views/Shared/_CycleStateDate.cshtml")</h3>
                </div>
            </div>
        </div>
    </section>

    <section class="sidebar-block sidebar_nav_menu roundBox">
        <div class="wrap">
            <h4 class="block-title"><strong>TOP NEWS</strong></h4>
            <div class="margin-top-lg text-left statement margin-sides-xl" aria-label="News and Announcements">
                <div class="statement margin-sides pad-sides">
                    @Html.Partial("_DisplayTopNews",Model)
                </div>
            </div>
        </div>
    </section>
</aside>

TopNews部分:

@model IEnumerable<Namespace.Models.TopNews>


<table class="table">

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Message)
        </td>
    </tr>
}

</table>

_DisplayTopNews视图

@model IEnumerable<Namespace.Models.TopNews>


<ul class="list">

    @foreach (var item in Model)
    {
        <li>
            @Html.DisplayFor(modelItem => item.Message)
        </li>
    }

</ul>

TopNewsController actionResult方法_DisplayTopNews():

private DbContext db = new DbContext();
public actionResult _DisplayTopNews()
{
    return View(db.TopNews.ToList());
}

任何人都可以指出我做错了什么以及如何纠正它吗?

*我想补充一点,所有CRUD功能都可以使用。

cumtlhf 回答:如何在MVC 5中获取部分视图以显示数据库Html.Partial中的数据

所以,回答我自己的问题。我意识到的第一件事是,我不想将自己的部分观点与其他TopNews视图混为一谈。因此,我在Home控制器中创建了局部视图。

这是部分内容:

Vagrant.configure("2") do |config|
  config.vm.box = "MalibuKoKo/ubuntu-18.04.3-server-arm64-raspberry-4"
  config.vm.define "ubuntu18.04-aarch64"
  config.vm.provider :libvirt do |libvirt|
    libvirt.machine_arch = "aarch64"
    libvirt.uri = 'qemu:///system'
    libvirt.emulator_path = "/usr/bin/qemu-system-aarch64"
  end
end

除了页面上的显示方式外,其他所有内容都相同。

在我的Home控制器中,我添加了一个ActionResult,它返回了_TopNews视图和模型。

这是HomeController ActionResult:

@model IEnumerable<Namespace.Models.TopNews>
@foreach (var item in Model)
{
    <blockquote class="left">
        <small>
            @Html.DisplayFor(modelItem => item.Message)
        </small>
    </blockquote>
}

private readonly DbContext db = new DbContext(); public ActionResult _TopNews() { return PartialView("_TopNews",db.TopNews.ToList()); } 中将渲染部分图像,而不是使用<aside>@Html.Partial,而是使用@Html.RenderPartial

这里是@Html.Action

<aside>

希望这对其他人有帮助。

本文链接:https://www.f2er.com/2370178.html

大家都在问