【发布时间】:2020-12-28 17:42:55
【问题描述】:
我希望将一个相当复杂的 ASP.NET MVC 应用程序从全框架迁移到 .Net Core,并更新到最新模式。当我们完成时,.Net 5 将完全发布....
我们现有的应用程序有一个布局视图 (_Layout.cshtml),它呈现主要内容。它还具有显示其他数据的不同“部分”(通常具有自己的 AJAX 功能)。
为了加载这些部分(在旧应用程序中),我们在_Layout.cshtml file 中使用以下示例语法:
<div class="....">
@this.Html.Action("ActionName", "ControllerName")
</div>
当调用此控制器操作时,它会从各种来源提取数据,生成 ViewModel,并返回一个 View(使用此 VM),然后显示在布局页面上。这些部分是“独立的”——通常有自己的 AJAX 活动。
对于 MVC .Net Core 3.x/5.x,我已经看到很多使用 <partial name="_NameOfPartial" /> 呈现局部视图的示例。这有一个model 的属性,所以我可以使用这种方法,但是从“单一责任”的角度来看,对于不相关的事情(在这种情况下,我的布局)对我来说了解关于视图模型的任何信息对一个 un相关部分。我还没有看到通过首先调用 Controller 来生成所需的 ViewModel 来执行此操作的示例...
我知道(但不是很熟悉)剃刀页面(vs 剃刀视图)。我的第一个想法是它们无疑对“轻量级”应用程序有用,但对于像我这样复杂的应用程序可能没有用。但是,我是否误解了这一点 - 什么标准决定是使用剃刀页面还是剃刀视图? “MVC”过时了吗?
但是,我的主要问题实际上分为两部分:
- 对于我的场景,对于 Core 5.x,视图(不仅仅是布局)调用控制器操作方法来生成视图模型并返回部分视图是“最佳实践”吗?如果不是,这里的最佳做法是什么(认为这是一个复杂的应用程序)?
- 如果对 1. 表示“是”,那么语法是什么?
提前致谢。
【问题讨论】:
-
啊....是
ViewComponent要走的路....? -
仅供参考:ViewComponent
标签: asp.net-mvc asp.net-core model-view-controller razor razor-pages