Asp.net mvc 使用ASP.NET MVC的新闻部分

Asp.net mvc 使用ASP.NET MVC的新闻部分,asp.net-mvc,Asp.net Mvc,我在ASP.NETMVC中为一个网站开发了一个新闻页面,其URL为localhost/news。 为此,我开发了一个控制器、模型和一个视图,它迭代模型中的所有项并显示它们。 此页面按日期降序显示数据库中的所有可用新闻。 我使用routing News/{id}来详细显示特定的新闻 如果我想在我的主页上只显示最后5条新闻,我该怎么办? 控制器可以重复使用吗?或者我需要重写从我的数据库中获取新闻记录的代码?我的方法是创建一个获取可查询的新闻项列表的视图 然后我会有一个PartialView,它只呈现

我在ASP.NETMVC中为一个网站开发了一个新闻页面,其URL为localhost/news。 为此,我开发了一个控制器、模型和一个视图,它迭代模型中的所有项并显示它们。 此页面按日期降序显示数据库中的所有可用新闻。 我使用routing News/{id}来详细显示特定的新闻

如果我想在我的主页上只显示最后5条新闻,我该怎么办?
控制器可以重复使用吗?或者我需要重写从我的数据库中获取新闻记录的代码?

我的方法是创建一个获取可查询的新闻项列表的视图

然后我会有一个PartialView,它只呈现一条新闻

然后,我的视图将遍历IQueryable集合,并使用
foreach(模型中的新闻项){}
呈现它在那里找到的所有新闻项。每个新闻项目都将在PartialView中呈现

此时,它满足了呈现新闻项的要求。如果您现在只想显示前5名,那么我会将我的路线更改为类似于
News/{top}
。这样我就可以把一个数字传给控制器,把前五名带回来

@LukLed关于使用LINQ的建议:如果您正在使用LINQ,请以正确的方式使用它。如果没有,那么使用你自己的算法来获得前5个帖子

无论如何,在你的索引视图中,你可以有一个链接,上面写着,这是未经测试的,比如

<%= Html.ActionLink("Top 5", "Index", new { top=5 }) %>

不确定以上是否正确,但你明白了


现在你可以有几个链接来支持前n名的帖子。

我在做了一些搜索之后有了一些想法。我想知道这些是否有帮助:

  • 使用局部视图,使其遵循干燥原则
  • 使用JsonResult作为返回类型设计方法,并将其与jquery一起使用

  • 欢迎您提出任何其他建议。

    您关于在jQuery中使用局部视图的评论非常有意义

    我从来都不明白你为什么要重复你的行为


    使用局部视图和jQuery做您想做的事情是其他人正在做的事情。它很快,看起来又花哨又光滑。

    我最近也遇到了几乎相同的问题。我最终使用了MVC Futures渲染实现。下面是一个解释如何使用它的好例子:

    基本上,你的ArticleController中会有类似的内容(我不把我的称为“NewsController”,因为我对它有偏执,假设“News”是“New”:p类型的集合)

    在母版页(或任何您想显示它的地方)中,您可以使用:

    <% Html.RenderAction<ArticleController>(c => c.SidebarBox()); %> 
    
    c.SidebarBox());%
    

    然后查看侧边栏框的代码。

    我的方法是查看一个可查看的新闻条目列表

    然后我会有一个PartialView,它只呈现一条新闻

    然后,我的视图将遍历IQueryable集合,并使用foreach(模型中的NewsItem){}呈现在那里找到的所有新闻项。每个新闻项目都将在PartialView中呈现

    此时,它满足了呈现新闻项的要求。如果您现在只想显示前5名,那么我会将我的路线更改为类似News/{top}。这样我就可以把一个数字传给控制器,把前五名带回来


    @LukLed关于使用LINQ的建议:如果您正在使用LINQ,请以正确的方式使用它。如果没有,那么使用您自己的算法来获得前5名帖子。

    请提供一些详细信息,因为它现在没有太多意义。你使用什么数据库?如何从数据库中获取新闻?如果你只想拿5张,就拿5张。它可能看起来像
    db.News.OrderByDescending(n=>n.Date).Take(5)
    数据库应该是无关的,这是模式实现的问题,而不是数据库交互的问题。他们已经提供了足够的相关信息。否决票相当苛刻。谢谢你的评论。让我解释一下我想使用它的场景。我想在一个典型的公司主页的右下角显示最近的新闻(因此前5条)。此外,我在最近新闻的底部有一个链接,上面写着“更多新闻”,链接到www.domain.com/news/。它显示数据库中的所有新闻。所以我想要5个超链接来显示首页上的前5名。我唯一的问题是,我必须再次使用主页上的数据库上下文,还是可以使用主页上的News/Top/5之类的内容(就像服务呼叫一样)。如果后一种方法是可能的,那么我想知道如何做以使生活更轻松(假设您使用的是标准工具),记住将SidebarBox视图生成为类型列表的强类型部分视图。
    <% Html.RenderAction<ArticleController>(c => c.SidebarBox()); %>