在ASP.net MVC 5中,我们可以使用
将节传递到布局@section AnySection{
//section code here
}
并在布局中通过
呈现@RenderSection("AnySection", required: false)
但是我们如何才能再次将该部分传递到该布局的局部呢?请参阅下图以供参考
subheader-v1
是布局中的局部视图,我的布局中包含许多局部视图。
当我尝试上面的图片中提到的方法时,它给了我这个错误
由于直接调用“ RenderSection”方法,因此无法直接请求文件“〜/ Views / Shared / partials / _subheader / subheader-v1.cshtml”。
答案 0 :(得分:4)
您不会将部分传递给布局。布局决定了应该(或可以)在视图中呈现哪些部分……还决定了该视图应在视图中的何处呈现。
布局可以通过调用来选择引用一个或多个部分 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
}
我认为第一种方法比第二种方法好。