gpt4 book ai didi

c# - 侧边栏中带有标题列表的新闻页面

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:58 25 4
gpt4 key购买 nike

我是 MVC 的新手。我正在尝试创建一个页面,其中从 SQL Server 数据库中提取新闻故事以填充页面的主要区域,同时我有一个侧边栏,其中列出了所有标题。我试过对侧边栏使用局部 View 。

下面是填充 View 的 Controller 代码:

        public ActionResult _ArticleList()
{
return View(db.Articles.OrderByDescending(a => a.id).ToList());
}

public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Articles articles = db.Articles.Find(id);
if (articles == null)
{
return HttpNotFound();
}
return View(articles);

我的主视图 - Details.cshtml

@model MyApplication.Models.Articles

<div id="container">

{
<div id="main" class="col-md-9">

<h2> @Html.DisplayFor(model => model.Headline)</h2>
<p style="white-space:pre-line">
@Html.DisplayFor(model => model.Content)
</p>
</div>
<div id="rightnav" class="col-md-3">
@Html.Partial("_ArticleList")

</div>
</div>

和我的局部 View - _ArticleList.cshtml

@model IEnumerable<MyApplication.Models.Articles>

@foreach (var item in Model)
{
<a href="/Details/@item.id"> @Html.DisplayFor(modelItem => item.Headline)</a>
<br>
}

我在 @model MyApplication.Models.Articles 之间发生冲突在主视图和@model IEnumerable<MyApplication.Models.Articles>在部分。

谁能提出解决这个问题的方法?

最佳答案

@Html.Partial("_ArticleList")
// and
@{Html.RenderPartial("_ArticleList");}

意味着,加载 CSHTML 页面并将其与当前模型一起放在此处(使用更高效的 Render 版本)。它们是controllerless 意味着没有调用 Controller 。

如果您需要在单独的 Controller /方法上下文中加载 HTML,那么您将使用以下方法之一。

@Html.Action("_ArticleList")
// and
@{Html.RenderAction("_ArticleList");}

同样,使用 Render Option is more performant .

您可能遇到的问题是,Action/Render 都会使用您拥有的任何布局进行渲染,从而导致非常奇怪的输出(可能是之前的 body 标签中的 html 标签)。为防止这种情况,您可以调用 PartialView() 而不是调用 View()在你的 Controller 中。

public ActionResult _ArticleList()
{
return PartialView(db.Articles.OrderByDescending(a => a.id).ToList());
}

我还建议您锁定此方法,以便它只能由 Action()RenderAction() 调用使用 ChildActionOnlyAttribute .

[ChildActionOnly]
public ActionResult _ArticleList()
{
return PartialView(db.Articles.OrderByDescending(a => a.id).ToList());
}

关于c# - 侧边栏中带有标题列表的新闻页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53948769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com