【问题标题】:Prefered way of building multi view layouts in ASP.NET MVC?在 ASP.NET MVC 中构建多视图布局的首选方式?
【发布时间】:2015-06-10 09:03:38
【问题描述】:

我目前想知道使用 ASP.NET MVC 构建多视图布局的首选方式。

例如,在基于角度的 SPA 中,将不同的视图加载到布局中非常简单:

<div ui-view="header"></div>
<div ui-view="content"></div>

.state("home", {
    views: {
        "header": { templateUrl: "app/_header.html" }
...

然而,在 MVC 中,似乎有多种方法可以实现某些目标,但我对“方法”最初用于什么目的感到非常困惑。

  • @Html.RenderPartial() - 呈现由父级定义的“部分”
  • @Html.Partial() - 好像和上面一样
  • @RenderPage() - 呈现由父级定义的“页面”
  • @RenderSection() - 通过 id 渲染一个“section”,section 由“body view”定义

对于常见的“页眉、正文、页脚、导航”布局,首选(或正确)方法是什么?还是只是个人喜好问题?

【问题讨论】:

  • 只是一个建议添加到下面的答案 - 如果你有一个 MVC 项目,你可以查看 /Views/Shared 文件夹并检查脚手架的 _Layout.cshtml 文件。我认为这将为您提供一个起点。根据您的目标,您还可以查看_ViewStart - 链接相对“旧”,但仍然很好/快速阅读。 Hth.

标签: c# asp.net asp.net-mvc angularjs razor


【解决方案1】:

在您的场景中,我会选择@Html.Partial,以防您需要在 SPA 中操作 HTML(因为您可以将其分配给变量)。

至于常见的元素,使用RenderPartial,这样会稍微快一些(虽然没什么好写的)。

解释如下:

Html.RenderPartial

将视图直接呈现给响应流,类似于服务器提供普通网页的方式。

Html.Partial

将视图呈现为字符串,如果要将结果分配给变量并对其进行操作,请使用它。

渲染页面

RenderPartial 相同,但允许您在需要时指定视图的路径。

渲染部分

通常在布局中用于定义将包含在子页面中的部分,如果您希望在 head 标记中包含您无法在子视图中指定的脚本/样式,这将特别有用。

还有:

渲染动作

这需要一个控制器和一个动作,并将呈现该动作的结果,如果所述视图需要不同的模型并且填充该模型的数据存储在一个通用函数/库中,这将非常有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多