如何获得部分视图以显示来自数据库的数据,在MVC 5中为Html.Partial,

问题描述 投票:0回答:1

在我的网站上,我想列出头条新闻<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功能都可以使用。

c# asp.net-mvc-5 asp.net-mvc-partialview
1个回答
0
投票
这里是部分内容:

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

除了它在页面上的显示方式之外,所有内容都是相同的。

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

这是HomeController ActionResult:

private readonly DbContext db = new DbContext(); public ActionResult _TopNews() { return PartialView("_TopNews", db.TopNews.ToList()); }

在将渲染部分图像的<aside>中,我使用@Html.Partial而不是使用@Html.RenderPartial@Html.Action

这里是<aside>

@model IEnumerable<Namespace.Models.TopNews> <aside class="sidebar sidebar-primary block-content-area col-md-4 panel-sides"> <section class="sidebar-block sidebar_nav_menu" aria-label="Top News sidebar"> <div class="panel panel-default"> <!--SIDEBAR HEADER--> <div class="panel-heading"> <h3 class="Agenda">Top News</h3> </div> <div class="panel-body"> @Html.Action("_TopNews", "Home") </div> </div> </section> </aside>

我希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.