我有一个使用_Layout.cshtml文件的ASP.NET,MVC,C#应用程序。 我想将_Layout.cshtml文件用于多个视图,但是根据显示的视图,我想稍微更改_Layout.cshtml。
例如在_Layout.cshtml中有类似的东西 -
<div>I would like to say </div>
@if(View = "View1")
{
<div>Hello!</div>
}
@else
{
<div>Goodbye!</div>
}
<div>Have a great day!</div>
有人能告诉我这是怎么做到的吗? 谢谢!
答案 0 :(得分:4)
假设您想要更改的不仅仅是简单的文本,您可以使用部分。例如,将其放在_Layout.cshtml
:
@RenderSection("mySection", required: true)
然后在每个View中:
@section mySection
{
<div>Hello!</div>
}
这是一个很好的blog,有更多信息。
答案 1 :(得分:1)
通常您想要检查操作而不是视图。你会想要做这样的事情
@if(Html.ViewContext.RouteData.Values["Controller"] == "Home" && Html.ViewContext.RouteData.Values["Action"] == "Index") {
<div>Hello!</div>
}else {
<div>Goodbye!</div>
}
答案 2 :(得分:0)
巧妙的解决方案:在视图中向ViewBag添加一个变量。 像这样:
@ViewBag.Foo="bar"
在定义要渲染的视图之前。并在基于它的布局中制作一个if。
虽然这不是最佳实践方法 - 但我个人也会选择不同的布局。