gpt4 book ai didi

asp.net-mvc - 根据事件页面有条件地显示部分 View

转载 作者:行者123 更新时间:2023-12-04 05:23:57 24 4
gpt4 key购买 nike

我正在尝试熟悉 ASP.net MVC5 并正在移植现有网站。

我已经定义了一个默认的共享布局 View ,其中包含一些部分,如页眉、导航、页脚等......

我的主页和其他使用这种布局的页面之间的唯一区别是主页有一个 slider 和一些其他独特的功能。除此之外,布局是相同的。

正因为如此,我认为创建两个不同的 View 并将主页的布局设置为使用一个 View ,而在大多数模板相同的情况下,所有其他页面都使用另一个 View 是不合理的。

我创建了一个名为 _HomeContentPartial 的部分包含主页的独特内容。

仅当我的主页(主页 Controller 上的索引操作)是当前页面时,Razor 有条件地包含此部分内容的最佳方式是什么?

最佳答案

只需添加 ViewBag.IsHome = true;home Controller ,index Action 方法 Controller 。

然后将其添加到 _layout.chtml看法:

   @if ((bool?)ViewBag.IsHome){
Html.RenderPartial( "_HomeContentPartial .cshtml" );
}

另外一个选项:

由于您可以在布局中指定任意数量的渲染区域,只需为可选部分放置占位符并使用 @RenderSectionrequired标志设置为 false这样它就不会介意它是否丢失。

例如在你的 _layout.cshtml

@RenderSection("额外标题", false)

然后在具有要插入该位置的可选部分的 View 中:
@section extraHeader{
<ul>
<li>Some new option 1</li>
<li>Some new option 2</li>
</ul>
}

您使用哪种方法将取决于您希望如何重用组件。您可以愉快地在 @section 中渲染局部 View 。允许跨多个 View 重用:

例如
@section extraHeader{
@Html.Partial("somepartialview")
}

甚至使用另一个 Controller Action (更好的封装,所以我的偏好):

例如
@section extraHeader{
@Html.Action("someAction", "someController", new {id = someValue})
}

关于asp.net-mvc - 根据事件页面有条件地显示部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com