如何将部分传递给布局中的局部视图?

时间:2020-04-06 03:28:31

标签: c# asp.net asp.net-mvc asp.net-core asp.net-mvc-5

在ASP.net MVC 5中,我们可以使用

将节传递到布局
@section AnySection{
  //section code here
}

并在布局中通过

呈现
@RenderSection("AnySection", required: false)

但是我们如何才能再次将该部分传递到该布局的局部呢?请参阅下图以供参考 how can we pass that section to partial? subheader-v1是布局中的局部视图,我的布局中包含许多局部视图。 当我尝试上面的图片中提到的方法时,它给了我这个错误

由于直接调用“ RenderSection”方法,因此无法直接请求文件“〜/ Views / Shared / partials / _subheader / subheader-v1.cshtml”。

3 个答案:

答案 0 :(得分:4)

您不会将部分传递给布局。布局决定了应该(或可以)在视图中呈现哪些部分……还决定了该视图应在视图中的何处呈现。

来自MS Documentation

布局可以通过调用来选择引用一个或多个部分 RenderSection。各节提供了一种组织某些页面的方式 元素应该放置。

部分无法在局部视图中使用,这是设计使然。您需要将RenderSection移至布局,并将节主体移至视图。有关更多信息,请参见this question

答案 1 :(得分:1)

在subheader-v1.cshtml内部(因为目标是将“ CoordinatesSelection” 部分引入subheader-v1.cshtml)替代

@RenderSection("Coordinates", required: false) 

FOR

@Html.Partial("CoordinatesSelection", Model)

@RenderSection(“ Coordinates”,required:false)代码被设计为直接在布局中编写,以避免重复调用!

答案 2 :(得分:0)

两种方式:

1。 您可以从subheader-v1迁移到layout

布局:

// your subheader-v1 code
@RenderBody()

您可以在布局中使用RenderSection

2。 您可以将模型传递给部分subheader-v1

*布局:

@Html.Partial("partials/_subheader/subheader-v1",RenderSection("Coordinates",false))
@RenderBody()

* subheader-v1:

@model object
.
.
.
<div class="kt-subheader__wrapper">
   @Html.Raw(Model)

* SelectClosetStore

@section Coordinates{
    //your partial code
}

我认为第一种方法比第二种方法好。