ASP.NET,MVC,C#应用程序 - 修改_Layout.cshtml以获取不同的视图

时间:2012-12-05 22:01:03

标签: c# asp.net-mvc

我有一个使用_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>

有人能告诉我这是怎么做到的吗? 谢谢!

3 个答案:

答案 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。

虽然这不是最佳实践方法 - 但我个人也会选择不同的布局。